نقطه ضعف در برنامه LockXLS و راه حلی برای آن ؟

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • a.dal65

    • 2011/04/29
    • 384
    • 67.00

    پرسش نقطه ضعف در برنامه LockXLS و راه حلی برای آن ؟

    سلام خدومت اساتید

    همونطور که میدونید شما وقتی فایل اکسلی که قبل باز کردید رو باز کنید همون فایل باز شده و براتون میاره و از یک فایل 2 بار براتون باز نمیکنه .

    وقتی فایل توسطlockxls پک میشه توی تنظیمات خود برنامه این قابلیت وجود نداره که فقط از فایل یدونه اجرا بشه . بعد از محافظت فایل هر چند بار که فایل رو بخواید میتونید اجرا کنید که این یه نقص حساب کن میشه چون کاربرسهوا دو بارفایلو باز میکنه روی فایل دومی تغییرات انجام میده و سیو میکنه بعد فایل اول رو که میبنده و سیو کنه دیگه تغییرات ش سیو نمیشه .

    برای اینکار من اومدم توسط یه Packer مثل enigma
    exe رو دوباره pack کردم که 2 بار از فایل اجرا نشه ولی یه مشکل دیگه هست که فایل رو دیگه نمیتونم توسط خود lockxls دیکریپت کنم !
    برای همین این راه حل جواب نمیده

    دوستانی میشه توسط vba کد نوشت که فایل یکبار اجرا بشه
    یا هر راه حلی که کارآمد باشه
    من میخوام فایلی که توسطlockxls محافظت میشه فقط یکبار اجرا بشه ازش .
  • a.dal65

    • 2011/04/29
    • 384
    • 67.00

    #2
    راستی آیا میشه از طریق vba چک کرد که اگه فایلی با نام 1.exe اجرا هست دیگه فایل باز نشه و پیام بده .
    ؟

    کامنت

    • a.dal65

      • 2011/04/29
      • 384
      • 67.00

      #3
      پیدا کردم
      در work book open
      کد HTML:
      If IsProcessRunning("1.EXE") = True Then
      MsgBox "برنامه قبلا باز شده است", vbCritical + vbMsgBoxRight, "خطا"
      ActiveWorkbook.Close savechanges:=False
      Else
      End If
      و این مازول هم اضافه بشه به فایل
      کد:
      Public Const SW_RESTORE = 9
      
      Public Declare Function BringWindowToTop Lib "user32" (ByVal hwnd As Long) As Long
      Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As Any, ByVal lpWindowName As Any) As Long
      Public Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
      
      
      
      Function IsProcessRunning(process As String)
      Dim objList As Object
      
      Set objList = GetObject("winmgmts:") _
          .ExecQuery("select * from win32_process where name='" & process & "'")
      
      If objList.Count > 0 Then
          IsProcessRunning = True
      Else
          IsProcessRunning = False
      End If
      
      End Function

      کامنت

      • hasa2

        • 2015/01/09
        • 73
        • 56.00

        #4
        ممنون بابت راه کاری که به اشتراک گذاشتید...
        حالا که بحث LockXLS شد یه سوال :

        جدیدا روی سیستم خودم دیگه فایلهای خروجی exe از این برنامه اجرا نمیشه و خطای زیر رو میده :

        ---------------------------
        File can't be opened. Please make sure that LockXLS Runtime Add-in is not disabled on your PC.
        ---------------------------
        OK
        ---------------------------


        به این مشکل برخورد کردید ؟

        کامنت

        • a.dal65

          • 2011/04/29
          • 384
          • 67.00

          #5
          کافیه فایل dll یا همون add on رو توی قسمت add on اضافه کنید.
          یا یکبار تیکشو بردارید و دوباره بزارید

          کامنت

          چند لحظه..