| |
|
|
| pas plus erforderlich, siehe iFs Posting, là est sich qui Source dans XPSE kompatibler Version sans Auteurs-Hinweis ou bien ähnlichem. Weiterentwicklung eingestellt.
[hr:aa5e7cfcab] Nachtrag de mir - iF. Thomas était so freundlich - pour court Aussprache entre mir et Ihm - seinen Code mir nochmals zur Disposition trop se mettre. et là qui Code ursprünglich ici stand mets je ihn aussi ici wieder hinein: KompilierenMarqueSéparationErsatz für Run
Wird es als Funktion aufgerufen, erhält man das hWnd des Fensters zurück
Fehlerrückgaben:
-1 = Programm wurde nicht gefunden oder falsche Parameterzahl
0 = Timeout erreicht, das ermitteln des Fenster hat mehr als 5 Sek. gedauert
und wurde abgebrochen
Autor: Thomas Schulz aka ts-soft
erstellt: 23.10.2006
Version: 1.0 für XProfan 10
$H windows.ph
$H structs.ph
Proc ?_RunEx
Case %PCount <> 1 : Return -1
Parameters cmdline$
Declare Ret&, SI#, PI#, WinHandle&, pid&, win&, timeout&
Struct STARTUPINFO = ~STARTUPINFO
Struct PROCESS_INFORMATION = ~PROCESS_INFORMATION
Dim SI#, STARTUPINFO
Dim PI#, PROCESS_INFORMATION
timeout& = ~GetTickCount() + 5000
WinHandle& = -1
Ret& = ~CreateProcessA(0, Addr(cmdline$), 0, 0, 0, 0, 0, 0, SI#, PI#)
If Ret&
Repeat
win& = FindWindow("")
While win&
~GetWindowThreadProcessId(win&, Addr(pid&))
If pid& = PI#.dwProcessId&
WinHandle& = win&
Break
EndIf
If ~GetTickCount() > timeout&
WinHandle& = 0
Break
EndIf
win& = ~GetWindow(win&, ~GW_HWNDNEXT)
EndWhile
Until WinHandle& > -1
EndIf
Dispose SI#
Dispose PI#
Return WinHandle&
../../references-fonction/XProfan/endproc/'>ENDPROC
|
|
|
| |
|
|
|
| KompilierenMarqueSéparation
Proc RunEx(cmdline$)
Declare SI#, PI#, pid&, win&
Dim SI#, STARTUPINFO
Dim PI#, PROCESS_INFORMATION
var timeout&:=GetTickCount()+5000
var WinHandle&:=-1
If CreateProcessA(0,Addr(cmdline$),0,0,0,0,0,0,SI#,PI#)
Repeat
win&:=FindWindow("")
While ((win&) and (winHandle&==-1))
GetWindowThreadProcessId(win&,Addr(pid&))
case pid& == PI#.dwProcessId& : WinHandle& = win&
case GetTickCount() > timeout& : WinHandle& = 0
win&:=GetWindow(win&, GW_HWNDNEXT)
EndWhile
Until WinHandle&>-1
EndIf
Dispose SI#
Dispose PI#
Return WinHandle&
EndProc
var notepad& = RunEx("c:\windows\notepad.exe")
If notepad&
SendString(notepad&, "XProfan 10 ist einfach Spitze!")
SendString(notepad&, "Aber das Wissen ja alle")
SendString(notepad&, "Gruß, Thomas")
EndIf
|
|
|
| |
|
|
|
| @iF qui Sinn, pourquoi Du den Source wiederholst, wobei ensuite encore quoi fehlt, entgeht mir ici. qui Code-Snippet sollte aussi sans XPSE courir qui Changement im Beispiel sur Hardcoded Dateipfad mais est wohl pas Dein Ernst? Es sollte possible chez chaque courir, bzw. si, ensuite ermittelt on den Pfad! |
|
|
| |
|
|
|
| quoi hat toi car gestochen?
quoi fehlt Dir car et pourquoi sollte un CodeSnippet quoi avec nécessaire XPSE bezeichnet ist aussi sans XPSE courir zumal Du oui bereits cela pas-XPSE Schnipsel posté la hâte?
qui Changement im Beispiel sur Hardcoded ist sehrwohl mon Ernst - mir ist unklar weshalb dans Beispielcodes rien hardcoded son darf! Ist cela une Unit? une DLL?
et cela Anrecht sur elle quelque chose - pourquoi De toute façon - trop wiederholen, habe je mir avec cela geschaffen cela ca ici mon Community ist - quoi naturellement pas heissen soll le moi pas wünsche mich puis aufmerksam trop faire si je quelque chose faux wiederhole. |
|
|
| |
|
|
|
| [quote-part:8cef19ce1c=TS-Soft]pas plus erforderlich, siehe iFs Posting, là est sich qui Source dans XPSE kompatibler Version sans Auteurs-Hinweis ou bien ähnlichem. Weiterentwicklung eingestellt.[/quote-part:8cef19ce1c] ah Gott là brennt qui Schuh! qui Autorenhinweis était doch bien sûr et deutlich dans DEINEM Posting trop lesen! seulement weil Du Dein Posting maintenant entfernt la hâte mais est alles pour qui Katz! mon Posting kahm pour Deinem Posting et était comme Ergänzung trop voyons - pas comme Ersatz!
je trouve tu as überreagiert Thomas.
[hr:8cef19ce1c] malheureusement hat Thomas son Posting entfernt - avec dem Originalcode (im pas-Xpse-Format), alors ici nochmal une vom XPSE umgewandelte Version im pas-Xpse-Format qui naturellement niiiieeeemals so joli ist comment Thomas sa variante qui aussi une Vermerk sur den Author (Thomas Schulz) enthielt. KompilierenMarqueSéparationDECLARE __cf1&,__cf2&,__cf3&,__cf4&
STRUCT STARTUPINFO=CB&,LPRESERVED#(4),LPDESKTOP#(4),LPTITLE#(4),DWX&,DWY&,DWXSIZE&,DWYSIZE&,DWXCOUNTCHARS&,DWYCOUNTCHARS&,DWFILLATTRIBUTE&,DWFLAGS&,WSHOWWINDOW%,CBRESERVED2%,LPRESERVED2&,HSTDINPUT&,HSTDOUTPUT&,HSTDERROR&
STRUCT PROCESS_INFORMATION=HPROCESS&,HTHREAD&,DWPROCESSID&,DWTHREADID&
Def __cf1(2) !"KERNEL32","GetProcAddress"
Def __cf2(1) !"KERNEL32","GetModuleHandleA"
__cf1&=__cf1(__cf2("kernel32.dll"),"GetTickCount")
__cf2&=__cf1(__cf2("kernel32.dll"),"CreateProcessA")
__cf3&=__cf1(__cf2("user32.dll"),"GetWindowThreadProcessId")
__cf4&=__cf1(__cf2("user32.dll"),"GetWindow")
$DEFINE XPSE
proc RUNEX
PARAMETERS CMDLINE$
DECLARE SI#, PI#, PID&, WIN&
DIM SI#, STARTUPINFO
DIM PI#, PROCESS_INFORMATION
VAR TIMEOUT&=call(__cf1&)+5000
VAR WINHANDLE&=-1
IF call(__cf2&,0,ADDR(CMDLINE$),0,0,0,0,0,0,SI#,PI#)
REPEAT
WIN&=FINDWINDOW("")
WHILE ((WIN&) AND (WINHANDLE&=-1))
call(__cf3&,WIN&,ADDR(PID&))
IF PID&=PI#.DWPROCESSID&
WINHANDLE&=WIN&
ENDIF
IF call(__cf1&) > TIMEOUT&
WINHANDLE&=0
ENDIF
WIN&=call(__cf4&,WIN&, 2)
ENDWHILE
UNTIL WINHANDLE&>-1
ENDIF
DISPOSE SI#
DISPOSE PI#
RETURN WINHANDLE&
endproc
VAR NOTEPAD&=RUNEX("c:\windows\notepad.exe")
IF NOTEPAD&
SENDSTRING(NOTEPAD&, "XProfan 10 ist einfach Spitze!")
SENDSTRING(NOTEPAD&, "Aber das Wissen ja alle")
SENDSTRING(NOTEPAD&, "Gruß, Thomas")
ref='./../../references-fonction/XProfan/endif/'>ENDIF
|
|
|
| |
|
|
|
GDL | s'il te plaît nich à meinem anniversaire streiten.
salut Georg |
|
|
| |
|
|
|
| [quote-part:f0cb3b491f=GDL]s'il te plaît nich à meinem anniversaire streiten.
salut Georg[/quote-part:f0cb3b491f] Du zauberst mir toujours wieder un Lächeln Georg. |
|
|
| |
|
|
|
GDL | suis aujourd'hui depuis langem la fois wieder bien sur elle et je wünsche mir, cela peut-être alle aujourd'hui la fois bien sur elle sommes.
salut Georg |
|
|
| |
|
|
|
| Hey cela bekommen wir sûrement hin - @alle: stiiiiimts???? |
|
|
| |
|
|
|
| je glaub wir (Thomas et je) konnten qui Indifferenz dans einem ausführlichen Skypegespräch beilegen. Drum siehe erstes Posting. |
|
|
| |
|
|
|
Torsten Rümker | je suis maintenant am essayer et essayer, et zwar habe je versucht qui Procedure encore mitzugeben dans welchem Modus cela Programme starten soll. (alors minimiert ou bien maximiert ou bien quoi que + subj.)
Folgendes habe je alors eingefügt bzw modifié: auparavant: KompilierenMarqueSéparation après: KompilierenMarqueSéparation Habe versucht CreateProcessA trop befolgen, mais irgendwie venez là chez mir nix chez raus, soll appeler cela Programme wird toujours im Normalmodus gestartet égal quoi je fais.
A
MfG Torsten Rümker |
|
|
| Ich lerne, ob ich will oder nicht! Betriebssystem: - Ubuntu 15.x - Windows (diverse) XProfan Version: X2 | 02.11.2006 ▲ |
|
|
|
|
| si Du déjà cela handle la hâte, pourquoi benutzte pas simple ShowWindow(N1,N2) ? |
|
|
| |
|
|