2 executabile care depind unul de celalalt
Last Updated: Apr 21 2006 13:00, Started by
ryady
, Feb 08 2006 00:49
·
0

#1
Posted 08 February 2006 - 00:49

Salut, as vrea sa stiu daca exista vreo cale sa rezolv aceasta problema, am 2 executabile intr-un director. si nu vreau sa se deschida al doiea executaibil decat daca il deschid prima data pe primul
Sa fie ceva de genul deschid primul executabil, in care exista un buton din care ma trimite in executabilul 2. Dar daca deschid din prima al doilea executabil sa nu se deschida eventual un mesaj in care zice ca nu folosesc modulul principal |
#2
Posted 08 February 2006 - 05:01

Poti folosi functii API, declari urmatoarea functie api intr-un modul
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long si apoi o folosesti mai jos pt a testa dc programul este deschis Public Sub Test (strCaleEXE As String) Dim rez As Double rez = FindWindow(vbNullString, strCaleEXE) if rez <> 0 then MsgBox "programul este deschis" End |
#3
Posted 08 February 2006 - 13:34

o metoda mult mai simpla.
al doilea exe il faci ActiveX exe, iar ca start-up definesti o procedura oarecare. in procedura de start testezi proprietatea StartMode in felul urmator: if App.StartMode = vbSModeStandalone then end end ifadica, daca aplicatia a fost pornita ca exe, executia se va termina imediat. daca aplicatia a fost pornita ca ActiveX, se continua executia normala a programului. Edited by hErr, 08 February 2006 - 13:35. |
#4
Posted 20 April 2006 - 22:48

I-mi cer scuze dar revin cu aceasta problema
romi : FindWindowA = ? nu ii dau de cap ![]() exista vreo cale sa rezolv aceasta problema, am 2 executabile intr-un director. si nu vreau sa se deschida al doiea executaibil decat daca il deschid prima data pe primul... ? |
#5
Posted 21 April 2006 - 13:00

- Poti in primul executabil (master) sa creezi, la inceput, un named mutex (ii dai un nume unic pe sistem: numele tau+numarul de telefon+CNP-ul), si il inchizi la sfarsitul programului.
- In al doilea executabil (slave), la inceputul lui, incerci sa deschizi mutex-ul, dupa numele ala unic. Daca esueaza deschiderea, inseamna ca primul executabil nu a fost lansat... Este unul dintre mecanismele unor virusi mai prosti de a vedea daca ruleaza o instanta de-a lor... PRIMUL EXECUTABIL (MASTER): // la inceputul lui WinMain(): HANDLE hMutex; hMutex = CreateMutex(NULL, TRUE, "cucuTest_numeleUnic"); // . . . alte functii ale tale // inainte sa se termine WinMain-ul: CloseHandle(hMutex); AL DOILEA EXECUTABIL (SLAVE): // la inceputul lui WinMain(): HANDLE hMutex; hMutex = OpenMutex(MUTEX_ALL_ACCESS, TRUE, "cucuTest_numeleUnic"); if (hMutex) OK(); // inseamna ca master-ul ruleaza - OK() - functie inexistenta else Fail(); // master-ul nu ruleaza - Fail() - functie inexistenta // . . . alte functii ale tale // inainte sa se termine WinMain-ul: CloseHandle(hMutex); Traduci tu in VB... Edited by Africanul, 21 April 2006 - 13:06. |
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users