Tạo mật khẩu cài đặt Add-in (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

vanmanhvcu

Thành viên chính thức
Tham gia
27/3/11
Bài viết
85
Được thích
10
Chào tất cả mọi người
Tôi có tạo 1 Add-in để lưu các UDF và Sub vào đó tiện cho việc sử dụng sau này
Nhưng tôi muốn tạo mật khẩu để mỗi khi cài đặt Addin trên máy tính.
Vậy có cách nào tạo mật khẩu mỗi khi người dùng thực hiện cài thì sự kiện Private Sub_Workbook AddinInstall() sẽ yêu cầu nhập đúng mật khẩu mới cho phép sử dụng Add-in ???
 
Chào tất cả mọi người
Tôi có tạo 1 Add-in để lưu các UDF và Sub vào đó tiện cho việc sử dụng sau này
Nhưng tôi muốn tạo mật khẩu để mỗi khi cài đặt Addin trên máy tính.
Vậy có cách nào tạo mật khẩu mỗi khi người dùng thực hiện cài thì sự kiện Private Sub_Workbook AddinInstall() sẽ yêu cầu nhập đúng mật khẩu mới cho phép sử dụng Add-in ???
Không thể nào nếu đó là mật khẩu mở file
 
Chào tất cả mọi người
Tôi có tạo 1 Add-in để lưu các UDF và Sub vào đó tiện cho việc sử dụng sau này
Nhưng tôi muốn tạo mật khẩu để mỗi khi cài đặt Addin trên máy tính.
Vậy có cách nào tạo mật khẩu mỗi khi người dùng thực hiện cài thì sự kiện Private Sub_Workbook AddinInstall() sẽ yêu cầu nhập đúng mật khẩu mới cho phép sử dụng Add-in ???
Tôi có cách này hơi củ chuối một chút nhưng hy vọng sẽ giúp ích cho bạn. Khi cài nó đòi key thì nhập GPE-ADMIN-GIAIPHAP
 

File đính kèm

Tôi có cách này hơi củ chuối một chút nhưng hy vọng sẽ giúp ích cho bạn. Khi cài nó đòi key thì nhập GPE-ADMIN-GIAIPHAP
Quá hay ! @giaiphap
tôi lại không biết là có thể dùng Ribbon.Invalidate để ẩn button đi
nhưng có 1 điều nữa là cách này có thể ẩn các Sub được gắn vào button nhưng các Function thì vẫn có thể sử dụng
Vậy có cách nào để handle nốt cái Function trong Add-in hay không?
 
Quá hay ! @giaiphap
tôi lại không biết là có thể dùng Ribbon.Invalidate để ẩn button đi
nhưng có 1 điều nữa là cách này có thể ẩn các Sub được gắn vào button nhưng các Function thì vẫn có thể sử dụng
Vậy có cách nào để handle nốt cái Function trong Add-in hay không?
Bạn thêm đoạn code này vào Module và test thử xem.
Mã:
Public Sub Sub_Test()
Dim aKey As Integer
    aKey = GetSetting("ToolsExcel", "ThietLap", "Key", 0)
        If aKey = 0 Then
            MsgBox "Xin loi ban khong co quyen chay sub nay"
        Else
            MsgBox "Ban vua cho chay sub"
        End If
End Sub

Public Function BinhPhuong(a As Long)
Dim aKey As Integer
    aKey = GetSetting("ToolsExcel", "ThietLap", "Key", 0)
        If aKey = 0 Then
            BinhPhuong = "Xin loi ban chua duoc cap quyen su dung ham nay"
        Else
            BinhPhuong = Sqr(a)
        End If
End Function
 
Quá hay ! @giaiphap
tôi lại không biết là có thể dùng Ribbon.Invalidate để ẩn button đi
nhưng có 1 điều nữa là cách này có thể ẩn các Sub được gắn vào button nhưng các Function thì vẫn có thể sử dụng
Vậy có cách nào để handle nốt cái Function trong Add-in hay không?
Nhưng cách này có an toàn không em nghĩ ko an toàn
 
Bạn thêm đoạn code này vào Module và test thử xem.
Mã:
Public Sub Sub_Test()
Dim aKey As Integer
    aKey = GetSetting("ToolsExcel", "ThietLap", "Key", 0)
        If aKey = 0 Then
            MsgBox "Xin loi ban khong co quyen chay sub nay"
        Else
            MsgBox "Ban vua cho chay sub"
        End If
End Sub

Public Function BinhPhuong(a As Long)
Dim aKey As Integer
    aKey = GetSetting("ToolsExcel", "ThietLap", "Key", 0)
        If aKey = 0 Then
            BinhPhuong = "Xin loi ban chua duoc cap quyen su dung ham nay"
        Else
            BinhPhuong = Sqr(a)
        End If
End Function
Cám ơn bác.
với mình như vậy là ổn.
Bài đã được tự động gộp:

Nhưng cách này có an toàn không em nghĩ ko an toàn
Vậy để an toàn hơn,
theo bạn nên làm thế nào? cho mình xin ý kiến.
 
Vô ích thôi bạn, bảo vệ = VBA thì chỉ dành cho những user bình thường, chứ với các cờ rắc cơ, họ bẻ cái 1.
 
Bạn thêm đoạn code này vào Module và test thử xem.
Mã:
Public Sub Sub_Test()
Dim aKey As Integer
    aKey = GetSetting("ToolsExcel", "ThietLap", "Key", 0)
        If aKey = 0 Then
            MsgBox "Xin loi ban khong co quyen chay sub nay"
        Else
            MsgBox "Ban vua cho chay sub"
        End If
End Sub

Public Function BinhPhuong(a As Long)
Dim aKey As Integer
    aKey = GetSetting("ToolsExcel", "ThietLap", "Key", 0)
        If aKey = 0 Then
            BinhPhuong = "Xin loi ban chua duoc cap quyen su dung ham nay"
        Else
            BinhPhuong = Sqr(a)
        End If
End Function
@giaiphap bác cho ý kiến nếu có thể set 1 Master Password và 1 user password
- Master Password sẽ luôn luôn dùng được cho mọi máy
- User Password sẽ chỉ sử dụng được trên duy nhất 1 máy tính. (mật khẩu được tạo ra từ Hardware ID của máy đó)
 
@giaiphap bác cho ý kiến nếu có thể set 1 Master Password và 1 user password
- Master Password sẽ luôn luôn dùng được cho mọi máy
- User Password sẽ chỉ sử dụng được trên duy nhất 1 máy tính. (mật khẩu được tạo ra từ Hardware ID của máy đó)
Được chứ, cứ việc code thôi, thậm chí 1 user chỉ dùng một số chức năng không dùng hết các chức năng vẫn được. cái quan trọng là code cho phù hợp thôi. Nhưng cho bạn một lời khuyên là code vba có tính bảo mật không cao.
 
Nếu viết code VBA thuần túy thì việc tạo key để kiểm tra các bạn chấp nhận tính rủi ro nếu ai đó cố tình hack. Xét cho cùng đến Windows, Office vẫn bị cơ mà :).
Có một cách có thể trên VBA chưa ai làm?/! Đó là mô hình client-server. Phía máy chủ lưu file có code VBA đầy đủ. Máy khách kết nối đến máy chủ, gọi thủ tục trên máy chủ máy chủ rồi nhận kết quả. Như vậy phía máy khách code chỉ có một vài dòng lệnh gọi mà thôi, như là

Kết quả = Xnet.RunMacroInServer("Tên tập tin Excel có VBA.xls","Tên hàm", các tham số nếu có)

Phương pháp này lập trình hoàn toàn bằng VBA.
Phương pháp này thì bạn chỉ cần bảo mật phía máy chủ, file excel ở mọi nơi không lo lộ code và bạn có thể kiểm tra được license máy khách, quy định dùng trong bao lâu thì không cho.... Cách này bạn phải dùng một ứng dụng có bản quyền khác ngoài Excel.
 
Được chứ, cứ việc code thôi, thậm chí 1 user chỉ dùng một số chức năng không dùng hết các chức năng vẫn được. cái quan trọng là code cho phù hợp thôi. Nhưng cho bạn một lời khuyên là code vba có tính bảo mật không cao.
@giaiphap @Nguyễn Duy Tuân
nghe nói .xll bảo mật cao hơn, nhưng tôi không biết về cách này, mong các bác chia sẻ
1. trên GPE có bài viết nào hướng dẫn chi tiết cách tạo Add-in .xll này không ? nếu có xin chỉ giúp !
2. tạo Add-in .xll có thể được viết code = Visual Basic không? hay bắt buộc viết = C++, Delphi … tôi chỉ biết về Visual Basic thôi
3. Add-in .xll có thể thêm Customs ribbon như .xlam không?
 
VB không viết được xll bạn à. Chính thống được MS support là dùng C/C++ với bộ IDE Visual Studio.
xll bản chất chỉ là các native dll. Thằng nào tạo native dll được thì viết xll được.
 
Lần chỉnh sửa cuối:
@giaiphap @Nguyễn Duy Tuân
nghe nói .xll bảo mật cao hơn, nhưng tôi không biết về cách này, mong các bác chia sẻ
1. trên GPE có bài viết nào hướng dẫn chi tiết cách tạo Add-in .xll này không ? nếu có xin chỉ giúp !
2. tạo Add-in .xll có thể được viết code = Visual Basic không? hay bắt buộc viết = C++, Delphi … tôi chỉ biết về Visual Basic thôi
3. Add-in .xll có thể thêm Customs ribbon như .xlam không?
Cái vụ này bạn tham khảo anh @Nguyễn Duy Tuân tui thì cái vụ XLL quá sức của tui rồi.
 
Cái vụ này bạn tham khảo anh @Nguyễn Duy Tuân tui thì cái vụ XLL quá sức của tui rồi.
Câu hỏi 1 và 3 của tôi vẫn chưa rõ câu trả lời thế nào?
Nếu có website nào hướng dẫn chi tiết thì càng tốt, Tiếng Anh thì cũng đọc được nhưng lâu hơn, còn Tiếng Việt hướng dẫn thì càng tốt :p
 
@giaiphap @Nguyễn Duy Tuân
nghe nói .xll bảo mật cao hơn, nhưng tôi không biết về cách này, mong các bác chia sẻ
1. trên GPE có bài viết nào hướng dẫn chi tiết cách tạo Add-in .xll này không ? nếu có xin chỉ giúp !
2. tạo Add-in .xll có thể được viết code = Visual Basic không? hay bắt buộc viết = C++, Delphi … tôi chỉ biết về Visual Basic thôi
3. Add-in .xll có thể thêm Customs ribbon như .xlam không?

XLL sẽ cần thiết khi bạn muốn viết hàm UDF (hàm tự tạo dùng trên sheet). CÒn bạn viết ứng dụng để chạy lệnh thì không cần phải XLL. Bạn tạo DLL cũng được. Tôi gửi cho bạn một cánh dùng Delphi để tạo Native DLL, hoặc ActiveX DLL (mặc dù bạn vẫn có lựa chọn khác như .NET).
Trong kênh Youtube của tôi có 4 bài học cho người mới tiếp cận đó, bạn xem rồi tự học tiếp nếu thấy hứng thú.
 
XLL sẽ cần thiết khi bạn muốn viết hàm UDF (hàm tự tạo dùng trên sheet). CÒn bạn viết ứng dụng để chạy lệnh thì không cần phải XLL. Bạn tạo DLL cũng được. Tôi gửi cho bạn một cánh dùng Delphi để tạo Native DLL, hoặc ActiveX DLL (mặc dù bạn vẫn có lựa chọn khác như .NET).
Trong kênh Youtube của tôi có 4 bài học cho người mới tiếp cận đó, bạn xem rồi tự học tiếp nếu thấy hứng thú.
Cám ơn Bác.
Bài đã được tự động gộp:

Quay lại nội dung chính của thớt này
Bác @Nguyễn Duy Tuân @ThangCuAnh có góp ý gì thêm cho việc tạo mật khẩu cài đặt Add-in thì bổ sung với nhé.
 
Lần chỉnh sửa cuối:
Viết hết code nhét vào file *.DLL xong làm vài dòng thủ tục keo từ Excel nghe có vẻ đơn giản nhất đó ???!!! :p :p
 
Viết hết code nhét vào file *.DLL xong làm vài dòng thủ tục keo từ Excel nghe có vẻ đơn giản nhất đó ???!!! :p :p
Đã viết DLL thì viết luôn ứng dụng trong nó

Cần nhắc lại rõ cho chủ topic rằng: VBA là mã nguồn mở, là dạng ngôn ngữ thông dịch, và dùng cho các bài toán / vấn đề nho nhỏ --> nên khả năng bảo mật là thấp và không cần thiết

@giaiphap @Nguyễn Duy Tuân
nghe nói .xll bảo mật cao hơn, nhưng tôi không biết về cách này, mong các bác chia sẻ
1. trên GPE có bài viết nào hướng dẫn chi tiết cách tạo Add-in .xll này không ? nếu có xin chỉ giúp !
2. tạo Add-in .xll có thể được viết code = Visual Basic không? hay bắt buộc viết = C++, Delphi … tôi chỉ biết về Visual Basic thôi
3. Add-in .xll có thể thêm Customs ribbon như .xlam không?

.XLL thì bạn có thể dùng VB.NET (phù hợp với cái bạn đã biết
 
Lần chỉnh sửa cuối:
.NET thì dễ dịch ngược rồi. Chia "buồm" ;)
Delphi thì nhiều bác amatuer build cứ để nguyên debug symbol (debug mode) rồi up lên, file bự bà cố, "rờ em" ra tất tần tật, hì hì. Mã assembly của Delphi/C++ Builder sinh ra cũng đơn giản, không optimize nhiều, nên dễ đọc.
Hiện tại thì không có cái gì là không dịch ngược được. Với bản thân tôi thì giờ Go Lang binary là ngán nhất.
Với chủ thớt thì thôi, cứ dùng VBA và VB đi, liệu cơm gắp mắm. Viết 1 COM dll = VB, lo mấy việc quản lý serial, user, bản quyền.
Nói gì nói thì mã PCode hay native code của VB cũng khoai, không dễ cờ rắc.
 
.NET thì dễ dịch ngược rồi. Chia "buồm" ;)
Delphi thì nhiều bác amatuer build cứ để nguyên debug symbol (debug mode) rồi up lên, file bự bà cố, "rờ em" ra tất tần tật, hì hì. Mã assembly của Delphi/C++ Builder sinh ra cũng đơn giản, không optimize nhiều, nên dễ đọc.
Hiện tại thì không có cái gì là không dịch ngược được. Với bản thân tôi thì giờ Go Lang binary là ngán nhất.
Với chủ thớt thì thôi, cứ dùng VBA và VB đi, liệu cơm gắp mắm. Viết 1 COM dll = VB, lo mấy việc quản lý serial, user, bản quyền.
Nói gì nói thì mã PCode hay native code của VB cũng khoai, không dễ cờ rắc.
Thế thì lời khuyên chủ topic là cứ viết tốt phần code chuyên môn của mình, rồi thuê công ty chuyên IT viết cho phần khóa, như thế đảm bảo khóa tốt - còn khóa cái gì trong đó kim cương, vàng ... hay là gì khác thì do chủ của nó quyết định
 
.NET thì dễ dịch ngược rồi. Chia "buồm" ;)
Delphi thì nhiều bác amatuer build cứ để nguyên debug symbol (debug mode) rồi up lên, file bự bà cố, "rờ em" ra tất tần tật, hì hì. Mã assembly của Delphi/C++ Builder sinh ra cũng đơn giản, không optimize nhiều, nên dễ đọc.
Hiện tại thì không có cái gì là không dịch ngược được. Với bản thân tôi thì giờ Go Lang binary là ngán nhất.
Với chủ thớt thì thôi, cứ dùng VBA và VB đi, liệu cơm gắp mắm. Viết 1 COM dll = VB, lo mấy việc quản lý serial, user, bản quyền.
Nói gì nói thì mã PCode hay native code của VB cũng khoai, không dễ cờ rắc.
Nhân tiên thử coi dùm mình cái thư viện code mình viết bằng Delphi với nhé ... xem trong đó có chi ko ???!!!
Xin cảm ơn
 
Mình có down về rồi bạn, bạn build debug mode, Turbo Debug symbol attach trong file, nên file nó mới tới 21 MB vậy.
 
Bạn muốn xem cái gì ?
Về Turbo Debug symbol, bạn xem ở đây:
 

File đính kèm

  • 1.png
    1.png
    131.7 KB · Đọc: 26
Khỏi đánh đố đi bạn, bạn search trong thư mục cài Delphi của bạn tool tdstripxx.exe rồi chạy thử đi xem nó là gì ?
Lần sau có release thì chịu khó build release mode, tắt option debug symbols đi rồi tung ra.
Hì hì, search 1 chút thấy Project Jedi vẫn còn sống, bồi hồi, mừng, chứng tỏ cộng đồng Delphi vẫn còn support nó.
 
Lần chỉnh sửa cuối:
Xin phép được Interrupt. Chúng ta bắt đầu đi sai chủ đề rồi
Mong các bạn để ý
Xin cám ơn.
 
Khỏi đánh đố đi bạn, bạn search trong thư mục cài Delphi của bạn tool tdstripxx.exe rồi chạy thử đi xem nó là gì ?
Lần sau có release thì chịu khó build release mode, tắt option debug symbols đi rồi tung ra.
Tò mò quá tìm mỏi mắt không thấy cái Tool tdstripxx.exe :p :p :p
 
tdstrp32.exe: Turbo Debugger 32-bit Symbol Table Stripper
Bác Nguyễn Duy Tuân xem lại cái Addin Tools của bác build mode gì thế :)
À bà tám chút, sẵn đây nói với bác Tuân luôn, UltraViewer của VN ta, nó viết = VB nhé ;)
 
Lần chỉnh sửa cuối:
Ý chắc là:

"Trong DLL có 11 hàm. Hàm 1 có nội dung ..."

Các nội dung kia phải liệt kê ở dạng văn bản, y như đã được viết trong Editor.

vd.
Mã:
function DoCreateWindow(aRemoteWnd: HWND): UINT; stdcall; export;
begin
  ...
end;

kieu manh tò mò do đọc dòng này ???
Hiện tại thì không có cái gì là không dịch ngược được
 
Hì hì, laptop tui bỏ ở nhà, giờ chỉ ngồi máy công ty, không có tool "rờ cxx em" gì hết, chỉ dùng hex editor online mà xem mã hex thôi, cũng đã thấy 1 đống.
Bác kiều mạnh xem lại code, trong các unit, phần uses, unit nào của Delphi mà bác không dùng thì chịu khó remove đi, làm gì uses lắm thế. Cứ { } lại, compile, báo lỗi thì bỏ { } ra, không thì tiếp cái khác.
Vd Indy library,... trong code của bác.
Delphi compiler nó hơi stupid, biểu nó uses là nó use à, bất kể coder có use không. Nên khi compile ra binary, nó include tất tần tật cái unit đó. File binary bự ra bà cố ;)
Đây là điểm dỡ của Delphi/C++ Builder từ xưa giờ: sinh ra binary bự, tốc độ assembly code chưa tối ưu = Visual C++/Intel C++compiler.
 
Hì hì, laptop tui bỏ ở nhà, giờ chỉ ngồi máy công ty, không có tool "rờ cxx em" gì hết, chỉ dùng hex editor online mà xem mã hex thôi, cũng đã thấy 1 đống.
Bác kiều mạnh xem lại code, trong các unit, phần uses, unit nào của Delphi mà bác không dùng thì chịu khó remove đi, làm gì uses lắm thế. Cứ { } lại, compile, báo lỗi thì bỏ { } ra, không thì tiếp cái khác.
Vd Indy library,... trong code của bác.
Delphi compiler nó hơi stupid, biểu nó uses là nó use à, bất kể coder có use không. Nên khi compile ra binary, nó include tất tần tật cái unit đó. File binary bự ra bà cố ;)
Đây là điểm dỡ của Delphi/C++ Builder từ xưa giờ: sinh ra binary bự, tốc độ assembly code chưa tối ưu = Visual C++/Intel C++compiler.
thấy code mới Tin ...:D
còn nhiều unit là do còn viết thêm rất nhiều ( mạnh phân loai ra cho dễ kiểm Soát VD : ADO = 1 unit, Hàm mãng = 1 unit ....)
 
Hi hi, có tds symbol là coi như có 80% code của bác kieu mạnh rồi, nên tôi kg có hứng
Giờ nhìn code Delphi ngán như cơm nếp
 
Thôi để hôm nào rờ em cái của bác Tuân luôn rồi tin sau hen befaint
 
Cái gì nhiều cũng ngán. Nhưng nếu đổi tí thì bao nhiêu cũng ham. Nếp + đậu xanh, nếp + lạc, nếp + ruốc thịt v...v :D
 
Hì hì, cũng xin lỗi chủ topic là bà tám quá đi lạc để của bác mất
Chưa đụng tới tds symbols
 

File đính kèm

  • 1.png
    1.png
    109.7 KB · Đọc: 36
Lần chỉnh sửa cuối:
Các hàm export:
dbkFCallWrapperAddr 00799640 1
__dbk_fcall_wrapper 00411554 2
TMethodImplementationIntercept 00467EC0 3
CopyTabaleName 0076F9D4 4
GetDataBaseArray 0076F394 5
TestArray 00779DC4 6
ImportToAccess 0077895C 7
InsertQuery 00779878 8
DelTableName 00779664 9
Get2DArray 007793FC 10
GetRows2DArray 00779244 11
GetMyRecord 0076F10C 12
OpenRecord 00779108 13
MyRecord 00778F1C 14
MyDAO 00778D28 15
MyRecord 00778F1C 16
ExportTableToExcel 0076EE64 17
ConnectionAccess 0076EC5C 18
CopyDataBase 0076F6C8 19
GetRangeArray 0076DC3C 20
RangeArray 0076D258 21
GetDataRangeArray 0076DFE8 22
DaoNguocArray 00777FB0 23
Transpose2DArray 00777E58 24
Filter1dArray 00777978 25
FilterDate1dArray 00777730 26
LocNgayThangNam 0077B764 27
TransArr 007775D0 28
CopyDataSheet 0076E2FC 29
CopyDataRange2 0076E85C 30
CopyDataRange 0076E560 31
GetDataRange 0076BF88 32
DicKeyMultiColumns 0076FD54 33
GetDictionaryKeys 0077029C 34
GetDicKeys 0076FFF4 35
GetDataFormServer 0076CF08 36
GetDataServer 0076CBA4 37
GetDataSQLServer 0076C78C 38
RunSQLToRange 0076BC58 39
MakeConnection 0077A190 40
Connection 0076C478 41
DictionaryKesSum 00770904 42
DictionaryKes 0077056C 43
UniMsgbox 00778358 44
TestFunctionExcel 0077BBD4 45
TestChuoi 0077BA78 46
GetSumDLL 0077BDEC 47
GetSumClass 0077BDCC 48
GetSum 0076B6A0 49
ShowFormNew 0077BE10 50
goiform 0077BE04 51
GetDataTon 007712D4 52
GetDictionary 00770E4C 53
TestArrayVar2 0077BE64 54
GetListSheet 0077820C 55
SetConnection 0077C01C 56
ExcelEnd 0077C1FC 57
TestExcel 0077C694 58
TestNew 0077C6F8 59
ConnecTionExcel 0077C728 60
GetDataQuery 0077C2B4 61
GetRemoteIp 0077AA10 62
GetIPAddress 0077A854 63
GetIpLAN 0077A984 64
GetLocalIP 0077AAB4 65
GetIpMachine 0077AB98 66
GetInternetIP 0077B00C 67
GetIPRealPublic 0077AE3C 68
IPAddrToName 0077AC78 69
GetHostNameByIP 0077AD54 70
GetIpPublic 0077B5DC 71
CheckPortTCP_IsOpen 0077A594 72
PortIsOpen 0077A618 73
CheckPortIsOpen 0077A724 74
CheckInternetConnection 0077A3DC 75
ListFilesInSubFolder 007786CC 76
DeleteFiles 007785A4 77
Supper_SQL 0076D5D0 78
SupperSQL 0077CA58 79
Vblibrary::initialization(void) 0078B320 [main entry]
 
Các unit của bác ấy:
ExcelXP: (cái unit này không biết bác ấy lấy trên mạng hay ai share), class TExcelApplication, TExcelWorksheet, TExcelWorkbook
UnitDll: function GetSumDLL
UnitClass: class TUDFExcel, method GetSumUnit
UnitPublic: function GetSum
Unit1: procedure ShowForm, TForm1.Button1Click -> TForm1.Button3Click
ADO_Excel: 14 function and procedure, nhiều quá lười liệt kê
ADO_Access: 7 function và procedure, nhiều quá lười liệt kê
VB_Dictionary: 8 function và procedure
VB_Array: 6 function và procedure, lấy code từ các hàm quen thuộc trên diễn đàn này
VB_UniMsgBox: 1 hàm duy nhất: UniMsgbox
VB_fso: 3 hàm, procedure MyFso, DeleteFiles, ListFilesInSubFolder
DAO_Access: 11 hàm và procedure
TADO: 1 hàm duy nhất MakeConnection
GetIPFormInternet: 16 hàm và procedure (viết sai From - Form)
VBLibrary.dpr: 15 hàm và procedure

Các biến public từ interface của các unit như Unit1 f, UDF; ADO_Excel: SQL, Strcon
....
Keys chứ kg phải Kes nhen bác Mạn. . .
Còn rất nhiều nữa, nhưng lười gõ ra. Ai cần hỏi chi tiết class nào, function nào, unit nào thì mình sẽ trả lời chi tiết.
Code bác Mạnh ta là copy từ "tả pín lù" gom góp mà thành ;)
 

File đính kèm

  • 2.png
    2.png
    90.2 KB · Đọc: 45
  • 3.png
    3.png
    31.2 KB · Đọc: 48
  • 4.png
    4.png
    23.1 KB · Đọc: 47
Lần chỉnh sửa cuối:
tdstrp32.exe: Turbo Debugger 32-bit Symbol Table Stripper
Bác Nguyễn Duy Tuân xem lại cái Addin Tools của bác build mode gì thế :)
À bà tám chút, sẵn đây nói với bác Tuân luôn, UltraViewer của VN ta, nó viết = VB nhé ;)

Bạn nói vậy là biết móng tay của bạn rất nhọn rồi! Mình từ trước giờ không đố ai đâu nhé :D
Ngày trước mình cũng tò mò Ultra, bản 5.0 làm bằng VB6, sau này không biết có pha trộn gì các thư viện khác không nữa?
 
Máy cô nv cùng phòng mình có cài, mình chỉ nhìn sơ qua thôi, kg có rờ em nó
Móng tay nhọn là sao bạn?
Bác Mạnh nhà ta dùng RAD Studio 2010
 
Lần chỉnh sửa cuối:
Liệt kê tên các hàm export thì dễ thôi.

Nhưng kieu manh chắc không đợi tên mà chắc đợi dạng này
Mã:
function DoCreateWindow(aRemoteWnd: HWND): UINT; stdcall; export;
begin
  ...
end;

Có thu màn hình trong tập tin test.avi.

test.JPG

Thực ra nếu chỉ lấy mỗi tên thì mở trong Hex Editor cũng nhìn thấy. Thậm chí nếu dll không bự cỡ 20 MB thì mở bằng notepad cũng nhìn thấy (các chỗ "đọc được")

hexeditor.JPG
 

File đính kèm

Lần chỉnh sửa cuối:
Tên unit, tên class, public variables, trong interface , tên biến của hàm, tên local variables trong hàm. . . Vv nhiều thứ nữa bác à
Export name thì tool PE nào coi cũng được.
Vd hàm Sum gì đó, 2 biến truyền vào là a, b. Result := a + b;
Đúng không bác Mạnh?
 
Lần chỉnh sửa cuối:
Anh kieu manh đi ngủ sớm rồi..
Sáng mai dậy buồn thiu cho mà xem :D :D
Thôi chuyển sang nghịch cái khác chung với em đi. :)
 
Anh kieu manh đi ngủ sớm rồi..
Sáng mai dậy buồn thiu cho mà xem :D :D
Thôi chuyển sang nghịch cái khác chung với em đi. :)
đang coi trên điện thoại ... mai nói sau ... coi được các đầu hàm à ... úp hết lên đi các hàm ấy cho cần thì copy ai hỏi mạnh trả lời cho ... viết trên điện thoại nhức mắt quá
 
Lần chỉnh sửa cuối:
Befaint chịu, tin chưa nè? Tui đã nói là có tds symbols là có 80% source code rồi mà kg tin.
Lo build lại release mode, strip tds symbol đi, pack, protect dll thêm 1 lớp nữa
 
Lần chỉnh sửa cuối:
p
Code bác Mạnh ta là copy từ "tả pín lù" gom góp mà thành ;)

Bạn nói vậy là ẩu đấy !!!???
1/ Toàn bộ code trong đó mạnh bắt đầu học và tập viết từ linh sau

2/ Trong file đó có rất nhiều hàm từ VBA mạnh lấy ý tưởng từ GPE xong chuyển qua code Delphi ( mục đích tạo thư viện hàm chung nhất để sử dụng khi cần thiết và tập viết code trên Delphi )

3/ trong thư viện đó như 1 mớ xà bần vì đang mò code test code viết dở linh tinh hết

4/ Toàn bộ code Delphi trong đó là mạnh viết hết đó ... có 1 vài code Copy trên mạng thì có lưu Link copy trong đó

5/ keo Mạnh "copy từ "tả pín lù" gom góp mà thành" là nói ẩu đó .... hãy thử lấy code trong đó ra cho mọi người xem là Mạnh copy từ đâu là biết ... phán xét như vậy là dụng trạm tới cái tôi của mạnh.... thấy ko thích lắm

6/ Khi mạnh đã úp lên rồi thì cứ thoải mái công khai code đó đi vì mạnh thích thế .... sẻ có nhiều người tham gia thì trình code của mạnh càng tiến bộ thêm nhưng Phán xét cho đúng là ok

Cảm ơn Bạn
 
Hì hì, để bác bớt thách đố, khích bác, thử người khác. Bác không phải dân coder chuyên nghiệp, cũng không phải dân "rờ chxxx em" chuyên nghiệp, nên bác đừng nghĩ là người khác không biết, không làm được như bác.
Code của bác thì còn rất rất nhiều vấn đề để nói. Nhưng để sau. Tôi không muốn tranh cãi, hơn thua. Mắc công mang tội khẩu nghiệp.
Về vụ uses unit, tôi nói bác không hiểu à. Nghĩa là use nhưng unit thừa của Delphi RTL/VCL đấy. Không dùng mà uses thí xác.
Nên file VBLibrary.dll của bác, tổng cộng hơn 100 unit được compile và nhét vào, của bác 8, 9 unit, còn lại của Delphi RTL/VCL
Như cái video tạo DLL của bác Tuân đấy, nhìn vào là thấy ngay 2 unit không dùng tới mà vẫn uses, là System.SysUtils và System.Classes.
Nên tôi mới nói là cái nào không dùng thì remove ra, dùng { } đóng lại, compile thử có báo lỗi không. Không báo lỗi thì xóa luôn, có báo lỗi thì bỏ { } ra.
Mặc định duy nhất 1 unit là unit System được Delphi compiler tự động đưa vào binary code, không cần uses nó. Unit System.pas này là core của Delphi app. Rãnh rỗi thì vào thư mục Source\RTL mà đọc các file .pas trong đó, như Types, System, SysUtils, Classes... để xem bên trong Delphi app là "như thế lào"
 
Khỏi đánh đố đi bạn, bạn search trong thư mục cài Delphi của bạn tool tdstripxx.exe rồi chạy thử đi xem nó là gì ?
Lần sau có release thì chịu khó build release mode, tắt option debug symbols đi rồi tung ra.
Hì hì, search 1 chút thấy Project Jedi vẫn còn sống, bồi hồi, mừng, chứng tỏ cộng đồng Delphi vẫn còn support nó.

1/ làm ơn chỉ dùm mạnh cái dòng tô đậm ... có tác dụng và ý nghĩa gì ?!
2/ Tại chưa thấy ai xem được code Delphi 10 nên thử xem sao đó thôi ... chứ ko có thách (Thông cảm nha)
3/ Mạnh rất rõ ràng cái nào học hay copy là nói rất rõ ko bao giờ mập mờ cả mà gán cho mạnh Copy là thấy khó chịu
4/ cái gì Mạnh chưa biết hỏi thì chỉ cho mạnh với !?

Cảm ơn
 
Cái link Delphi 2006 tui post ở trên, có chỉ cách bật tắt đó, vào đọc đi. Không hiểu gì thì trong Delphi IDE Project Options, nhấn F1 rồi đọc.
 
Còn nhiều cái để giảm size nữa, thử mò đi.
 
Tui cũng thua luôn ;) Hỏi bác Tuân ấy, tui đã nói là giờ nhìn Delphi tui ngán hơn cơm nếp mà. Chỉ nhớ gì nói phét đó thôi, chứ cái máy ở VP cty này, Ét xeo chạy còn chưa nổi lấy gì cài RAD Studio cả Gi mấy mà chỉ bác.
 
Nguyên lý chính để giảm dung lượng là chỉ khai báo các unit mà cần dùng thôi. Đôi khi chỉ vì dùng có vài hàm mà phải bê cả thư viện code trong unit (chứa đựng rất nhiều thứ) thì cân nhắc tự khai báo riêng để dll build ra nó nhẹ.
 
Lần chỉnh sửa cuối:
Tôi có cách này hơi củ chuối một chút nhưng hy vọng sẽ giúp ích cho bạn. Khi cài nó đòi key thì nhập GPE-ADMIN-GIAIPHAP
@giaiphap
xem giúp tôi xem sai ở đâu ??
khi mở Excel lên máy tôi báo thế này 6 lần
220347
Customs UI của tôi thế này
Mã:
<?xml version="1.0" encoding="UTF-8"?> 
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="OnRibbonLoad">
    <ribbon startFromScratch="false">
        <tabs>
            <tab idMso="TabHome">
                
                <group id="customsGroup" label="T&#7891;n kho" insertBeforeMso="GroupStyles" getVisible="GetVisible">
                    <button id="customButton" label="Check t&#7891;n theo &#273;&#417;n"
size="large" onAction="PHANBO" imageMso="UpgradeWorkbook" screentip="Click &#273;&#7875; ch&#7841;y t&#7891;n kho" tag = "Tag1" />
                </group>
                <group id="customsGroup1" label="T&#225;ch Size" insertBeforeMso="GroupStyles" getVisible="GetVisible">
                    <button id="customButton1" label="T&#225;ch Size phi&#7871;u xu&#7845;t"
size="large" onAction="CLEAN" imageMso="PivotExportToExcel" screentip="Click tach size" tag = "Tag2"/>
                </group>
                <group id="DaoCat" label="Gh&#233;p Dao" insertBeforeMso="GroupStyles" getVisible="GetVisible">
                    <button id="customButton2" label="Pha Bang"
size="large" onAction="DisplayDaoCat" imageMso="DesignMode" screentip="Click de tinh" tag = "Tag3"/>
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>
 
@giaiphap
xem giúp tôi xem sai ở đâu ??
khi mở Excel lên máy tôi báo thế này 6 lần
View attachment 220347
Customs UI của tôi thế này
Mã:
<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="OnRibbonLoad">
    <ribbon startFromScratch="false">
        <tabs>
            <tab idMso="TabHome">
               
                <group id="customsGroup" label="T&#7891;n kho" insertBeforeMso="GroupStyles" getVisible="GetVisible">
                    <button id="customButton" label="Check t&#7891;n theo &#273;&#417;n"
size="large" onAction="PHANBO" imageMso="UpgradeWorkbook" screentip="Click &#273;&#7875; ch&#7841;y t&#7891;n kho" tag = "Tag1" />
                </group>
                <group id="customsGroup1" label="T&#225;ch Size" insertBeforeMso="GroupStyles" getVisible="GetVisible">
                    <button id="customButton1" label="T&#225;ch Size phi&#7871;u xu&#7845;t"
size="large" onAction="CLEAN" imageMso="PivotExportToExcel" screentip="Click tach size" tag = "Tag2"/>
                </group>
                <group id="DaoCat" label="Gh&#233;p Dao" insertBeforeMso="GroupStyles" getVisible="GetVisible">
                    <button id="customButton2" label="Pha Bang"
size="large" onAction="DisplayDaoCat" imageMso="DesignMode" screentip="Click de tinh" tag = "Tag3"/>
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>
Có ai biết xem giúp mình nhé. !
Bài đã được tự động gộp:

Mình tự mò ra được lỗi rồi
đã chạy được !
 
Lần chỉnh sửa cuối:
Những unit không dùng thì bỏ khỏi uses là đúng rồi. Nhưng cũng cần cân nhắc cách viết code. Tôi lấy vd. có thể không sát lắm nhưng chỉ để diễn giải ý mà thôi. Vd. ta có uses Windows, Messages, ...
Kiểm tra thì thấy cả 2 unit được dùng. Nhưng dò kỹ lại thì thấy Windows được dùng từ đầu đến cuối nhưng Messages chỉ được dùng vài chỗ, vài chục chỗ nhưng thực ra chỉ dùng 1 procedure duy nhất là ShowMessage. Thế thì bỏ Messages đi và thay ShowMessage bằng hàm API.

Vân vân và mây mây.
 
Những unit không dùng thì bỏ khỏi uses là đúng rồi. Nhưng cũng cần cân nhắc cách viết code. Tôi lấy vd. có thể không sát lắm nhưng chỉ để diễn giải ý mà thôi. Vd. ta có uses Windows, Messages, ...
Kiểm tra thì thấy cả 2 unit được dùng. Nhưng dò kỹ lại thì thấy Windows được dùng từ đầu đến cuối nhưng Messages chỉ được dùng vài chỗ, vài chục chỗ nhưng thực ra chỉ dùng 1 procedure duy nhất là ShowMessage. Thế thì bỏ Messages đi và thay ShowMessage bằng hàm API.

Vân vân và mây mây.
1/ Anh ... có cách nào Mình khai báo Uses Public mà xài chung cho nhiều Unit ko ???
2/ Em đang suy nghĩ bài 31 hoài dòng sau

build release mode, tắt option debug symbols

Khi em tắt đi nó giảm file tới 5MB đó ....???

Anh biết giải thích dùm
 
1/ Anh ... có cách nào Mình khai báo Uses Public mà xài chung cho nhiều Unit ko ???
Tôi không biết bạn khai báo gì cụ thể nhưng có 2 chỗ uses là ở phần interface và phần implementation. Bạn nên tự đọc và tìm hiểu. Khi khai báo có thể gặp "Circular unit reference". Lại tìm và đọc để hiểu.

Vd. bạn có một loạt Const, procedure, function sẽ được dùng trong các unit khác thì khai báo chúng ở phần interface, code (implementation) của procedure, function ở phần implementation của unit vd. myConst. Sau đó trong các unit khác thêm myConst vào uses thôi.
2/ Em đang suy nghĩ bài 31 hoài dòng sau

build release mode, tắt option debug symbols

Khi em tắt đi nó giảm file tới 5MB đó ....???

Anh biết giải thích dùm
Bạn đã được ThangCuAnh cung cấp vài thông tin thì đọc đi rồi tìm đọc và tìm hiểu thêm.
 
Khổ ghê, chưa học bò đã đòi học chạy. Cứ nôn nóng, đốt cháy giai đoạn.
Bác Mạnh chịu khó đọc 2 cái link này sẽ hiểu thế nào là Debug build/Release build. Còn TDS debug symbol thì cứ biết là có nó đi, còn nó có cấu trúc ra sao, làm gì... thì từ từ tìm hiểu sau:
 
Hì hì, xuống được bao nhiêu MB rồi bạn Mạnh ?
Tui cũng lạ là làm sao file binary của bạn phình to khủng khiếp vậy, mười mấy MB. Size cỡ đó phải cỡ 1 project rất lớn, hơn chục coder tham gia.
Bác xem có bật nhúng remote debug symbols trong Project Options không đấy ?
 
Hì hì, xuống được bao nhiêu MB rồi bạn Mạnh ?
Tui cũng lạ là làm sao file binary của bạn phình to khủng khiếp vậy, mười mấy MB. Size cỡ đó phải cỡ 1 project rất lớn, hơn chục coder tham gia.
Bác xem có bật nhúng remote debug symbols trong Project Options không đấy ?
1/ bỏ bớt Uses đi nữa giản rất nhiều

2/ bỏ theo hình sau giản 1 cái 5M đó
Capture.JPG

Theo Mạnh suy đoán bỏ cái đó là rất khó coi các tên Hàm đó ... mà chỉ mò code xong debug he

Vì Mạnh có nhớ bạn có nói tới mấy bài trên GPE ... nếu tìm thấy symbols là có cơ hội ....

Cảm ơn Bạn rất nhiều nếu Mạnh ko úp file DLL lên nói qua nói lại nghe sốc chút thì làm sao Mạnh biết thêm mấy cái chiêu này nữa ... hỏi thì cũng ko biết hỏi cái chi ... có xung đột thì nó mới phát sinh và lòi ra nhiều cái hay của nó -0-0-0-===\.


Bạn kinh nghiệm Delphi đầy mình ra .... có chiêu nào hay chỉ thêm cho Mạnh học với ... ngộ nhỡ sau này nó thất truyền đi thì thấy tiếc đó he
 
Khổ ghê, nhìn cái hình bạn vẫn đang ở mode compile Debug kìa.
 
Mấy cái link tui đưa lên, bạn có đọc chưa ? Chỉ đơn giản là switch từ Debug mode sang Release mode mà bạn mò chưa ra à ?
 
Đúng rồi đó bạn Mạnh. Xem thử các options của Release khác Debug như thế nào, và tại sao khác luôn ;)
Build Release mode xem file dll xuống còn bao nhiêu ?
 
Lần chỉnh sửa cuối:
Đúng rồi đó bạn Mạnh. Xem thử các options của Release khác Debug như thế nào, và tại sao khác luôn ;)
Build Release mode xem file dll xuống còn bao nhiêu ?
cảm ơn rất nhiều mới thử xong Từ 20M xuống còn 4M file rất nhẹ :D
Còn chữ to và đậm kia là thua luôn .... sau nay may ra biết ???!!!
 
Vẫn còn bự quá, sao lạ vậy ta, chỉ có vài unit với vài hàm thôi mà. So size với các Addin A-Tools của bác Tuân thử bác Mạnh ?
Mình nghĩ nhiêu đó thì chỉ dưới 1 MB thôi.
Bạn chụp cho mình hình Project Options - Release mode, 2 hình Compiling và Linking luôn, mình xem thử có remote debug symbol hay gì khác nữa không ?
 
Lần chỉnh sửa cuối:

Bài viết mới nhất

Back
Top Bottom