Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
CreateProcess Problems
Message
De
21/11/2003 12:52:14
 
 
À
20/11/2003 22:26:36
Information générale
Forum:
Visual FoxPro
Catégorie:
Fonctions Windows API
Divers
Thread ID:
00852013
Message ID:
00852393
Vues:
17
That works! Here is my final working code:
DO DECL
lcivansparm = " /A /M:TECHSUPPORT;SYSERROR;TMCONFIG;AIDOWN"
lcivansapp = get_ini(inifile,'[IVANS]','ExePath')
lcivansdir = LEFT(lcivansapp,RAT("\",lcivansapp)-1)
lcivansprg = "TransMan.exe"
lcivansdef = SYS(2003)
llivansok  = .F.
SET DEFAULT TO LEFT(lcivansapp,RAT("\",lcivansapp)-1)
*--Does the app exist?
IF ADIR(laDummy, lcivansapp)=1
	*--Can we run it?
	llivansok = RunAndWait(lcivansprg, lcivansparm, lcivansdir)
	IF !llivansok
            *---message to user
        ENDIF
ELSE
   *...message to user
ENDIF
*
PROCEDURE  RunAndWait (lcApp, lcCmdLine, lcdir)
#DEFINE INFINITE  0xFFFFFFFF
LOCAL lcStartupInfo, lcProcInfo, hProcess, ;
	lnPrio, lnIBelieve1
lnIBelieve1 = 1   && Don't remember what that was
lnPrio = 32 && Priority of Process=Normal
lcStartupInfo = CHR(68) + REPLI(CHR(0), 67)
lcProcInfo = REPLI(CHR(0), 16)
IF CreateProcess(0, m.lcApp+" "+m.lcCmdLine+CHR(0), 0,0,;
		m.lnIBelieve1, m.lnPrio,;
		0, 0, @lcStartupInfo, @lcProcInfo) <> 0
	* process and thread handles returned in ProcInfo structure
	hProcess = buf2dword(SUBSTR(lcProcInfo, 1,4))
	hThread = buf2dword(SUBSTR(lcProcInfo, 5,4))
	* waiting until the termination
	= WaitForSingleObject(hProcess, INFINITE)
	= CloseHandle(hThread)
	= CloseHandle(hProcess)
ELSE
	RETURN .F.
ENDIF
RETURN

PROCEDURE DECL
DECLARE INTEGER CreateProcess IN kernel32;
	INTEGER lpAppName, STRING lpCmdLine, INTEGER lpProcAttr,;
	INTEGER lpThrAttr, INTEGER bInhHandles, INTEGER dwCrFlags,;
	INTEGER lpEnvir, INTEGER lpCurDir, ;
	STRING @lpStInfo, STRING @lpProcInfo
DECLARE INTEGER GetLastError IN kernel32
DECLARE INTEGER CloseHandle IN kernel32 INTEGER hObject
DECLARE INTEGER WaitForSingleObject IN kernel32;
	INTEGER hHandle, INTEGER dwMilliseconds
RETURN

FUNCTION buf2dword(lcBuffer)
		RETURN ASC(SUBSTR(lcBuffer, 1,1)) + ;
		ASC(SUBSTR(lcBuffer, 2,1)) * 256 +;
		ASC(SUBSTR(lcBuffer, 3,1)) * 65536 +;
		ASC(SUBSTR(lcBuffer, 4,1)) * 16777216
RETURN
THANKS!
.·*´¨)
.·`TCH
(..·*

010000110101001101101000011000010111001001110000010011110111001001000010011101010111001101110100
"When the debate is lost, slander becomes the tool of the loser." - Socrates
Vita contingit, Vive cum eo. (Life Happens, Live With it.)
"Life is not measured by the number of breaths we take, but by the moments that take our breath away." -- author unknown
"De omnibus dubitandum"
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform