|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1213 Wohnort: Ruhrpott
|
Verfasst am: 04.06.2017, 18:38 Titel: |
|
|
Stimmt, /WAIT funktioniert nur solange das Fenster sichtbar ist. Und auch "tasklist" (über OPEN PIPE aufgerufen und periodisch abgefragt) listet nur Prozesse auf, deren Fenster sichtbar sind. Um alle laufenden Prozesse zu überwachen, sind einige Klimmzüge erforderlich: Code: | #Include "windows.bi"
#Include "win/tlhelp32.bi"
Dim As HANDLE snapshothandle
Dim As PROCESSENTRY32 prozessantwort
Dim As Integer ende
Shell "start /B ""C:\Program Files (x86)\Java\jre1.8.0_121\bin\"" javaw.exe -ea -jar ""G:\javafo.jar"" ""G:\javafo_in.txt"" -p > ""G:\javafo_out.txt"" -w"
Do 'auf ende des prozesses warten
ende = 1
snapshothandle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0) 'handle für systemschnappschuß erstellen
prozessantwort.dwSize = SizeOf(prozessantwort) 'größe der datenstruktur für antwort übergeben
Process32First(snapshothandle,@prozessantwort) 'ersten prozesshandle suchen (ist SYSTEM IDLE PROCESS)
Do While Process32Next(snapshothandle, @prozessantwort) 'alle prozesse durchsuchen
If prozessantwort.szExeFile = "javaw.exe" Then 'prozess läuft noch
ende = 0
Exit Do
EndIf
Loop
CloseHandle(snapshothandle) 'ressourcen freigeben
Sleep 100
Loop Until ende
|
CreateToolhelp32Snapshot und alle anderen 32er - Funktionen sollen laut Internet auch mit 64bit funktionieren, wenn das Programm mit 64bit compiliert wurde.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2509 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 04.06.2017, 19:44 Titel: |
|
|
Ich kenne in diesem Zusammenhang nur die Run-Methode von WSH (Windows Script Host): Dort gibt es extra einen Parameter bWait, den man für das Abwarten vom Ende auf True setzt, dann gibt der Methodenaufruf auch den %ERRORLEVEL% zurück.
Ansonsten würde ich an dieser Stelle einmal
Code: | Dim fh As Integer
Dim z As String
fh = Freefile
Open Pipe "javaw -ea -jar ""G:\javafo.jar"" ""G:\javafo_in.txt"" -p -w" For Input As #fh
While Not Eof(fh)
Line Input#fh, z
' Hier Ausgabe z verarbeiten
Wend
Close fh |
ausprobieren.
Nebenbei: Java wird normalerweise immer in %PATH% (Suchweg) eingetragen, womit kein absoluter Pfad eingetragen werden muss, der mit jedem Update der JRE (Java Runtime Environment) wechselt.
Falls das mit dem Suchweg nicht geht, würde ich wenigstens eine Umgebungsvariable wie JAVA_HOME verwenden, die jeweils richtig gesetzt sein muss (geschäftlich habe ich übrigens mit einer ERP-Software zu tun, wo diese Umgebungsvariable gesetzt sein muss). _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1041 Wohnort: Niederbayern
|
Verfasst am: 04.06.2017, 21:10 Titel: |
|
|
grindstone hat Folgendes geschrieben: | Stimmt, /WAIT funktioniert nur solange das Fenster sichtbar ist. Und auch "tasklist" (über OPEN PIPE aufgerufen und periodisch abgefragt) listet nur Prozesse auf, deren Fenster sichtbar sind. Um alle laufenden Prozesse zu überwachen, sind einige Klimmzüge erforderlich: Code: | #Include "windows.bi"
#Include "win/tlhelp32.bi"
Dim As HANDLE snapshothandle
Dim As PROCESSENTRY32 prozessantwort
Dim As Integer ende
Shell "start /B ""C:\Program Files (x86)\Java\jre1.8.0_121\bin\"" javaw.exe -ea -jar ""G:\javafo.jar"" ""G:\javafo_in.txt"" -p > ""G:\javafo_out.txt"" -w"
Do 'auf ende des prozesses warten
ende = 1
snapshothandle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0) 'handle für systemschnappschuß erstellen
prozessantwort.dwSize = SizeOf(prozessantwort) 'größe der datenstruktur für antwort übergeben
Process32First(snapshothandle,@prozessantwort) 'ersten prozesshandle suchen (ist SYSTEM IDLE PROCESS)
Do While Process32Next(snapshothandle, @prozessantwort) 'alle prozesse durchsuchen
If prozessantwort.szExeFile = "javaw.exe" Then 'prozess läuft noch
ende = 0
Exit Do
EndIf
Loop
CloseHandle(snapshothandle) 'ressourcen freigeben
Sleep 100
Loop Until ende
|
CreateToolhelp32Snapshot und alle anderen 32er - Funktionen sollen laut Internet auch mit 64bit funktionieren, wenn das Programm mit 64bit compiliert wurde.
Gruß
grindstone | Die Methode funktioniert schon mal.
Zitat: | Nebenbei: Java wird normalerweise immer in %PATH% (Suchweg) eingetragen, womit kein absoluter Pfad eingetragen werden muss, der mit jedem Update der JRE (Java Runtime Environment) wechselt.
Falls das mit dem Suchweg nicht geht, würde ich wenigstens eine Umgebungsvariable wie JAVA_HOME verwenden, die jeweils richtig gesetzt sein muss (geschäftlich habe ich übrigens mit einer ERP-Software zu tun, wo diese Umgebungsvariable gesetzt sein muss). | Das ist das Problem, wenn eine neue Version installiert wird, dass der Pfad nicht mehr stimmt. Mal schauen ob es so funktioniert...
Vielen herzlichen Dank für die Hilfe!
Ein kleiner Test meinerseits der funktioniert:
Code: | ShellExecute(NULL, "open", "javafo.bat", NULL, NULL, SW_HIDE)
SLEEP 100 ' ein bisschen warten, bis Prozess eingetragen ist
DO 'auf ende des prozesses warten
ende = 1
snapshothandle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0) 'handle für systemschnappschuß erstellen
prozessantwort.dwSize = SIZEOF(prozessantwort) 'größe der datenstruktur für antwort übergeben
Process32First(snapshothandle,@prozessantwort) 'ersten prozesshandle suchen (ist SYSTEM IDLE PROCESS)
DO WHILE Process32Next(snapshothandle, @prozessantwort) 'alle prozesse durchsuchen
IF prozessantwort.szExeFile = "javaw.exe" THEN 'prozess läuft noch
ende = 0
EXIT DO
END IF
LOOP
CloseHandle(snapshothandle) 'ressourcen freigeben
SLEEP 100
LOOP UNTIL ende |
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
St_W
Anmeldungsdatum: 22.07.2007 Beiträge: 949 Wohnort: Austria
|
Verfasst am: 05.06.2017, 12:21 Titel: |
|
|
Wenn ohnehin schon auf die Win32-API zurückgegriffen wird und absolute Pfade verwendet werden könnte man auch gleich CreateProcess anstatt SHELL verwenden. Da erhält man gleich das Process-Handle ohne über alle laufenden Prozesse drüber iterieren zu müssen, was eventuell fehleranfällig ist wenn der Prozess öfters läuft (was bei Java durchaus nicht abwegig wäre).
Ebenso muss man nicht ständig pollen ob der Prozess noch läuft, sondern kann einfach auf sein Ende warten, auf Wunsch sogar mit Timeout:
Code: | WaitForSingleObject(hProcess, INFINITE) |
Alternativ zu CreateProcess könnte man übrigens auch ShellExecuteEx verwenden, falls notwendig. _________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1213 Wohnort: Ruhrpott
|
Verfasst am: 07.06.2017, 00:19 Titel: |
|
|
Ist nur die Frage, ob WaitForSingleObject nicht auch nur bei sichtbaren Fenstern funktioniert...
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 07.06.2017, 01:06 Titel: |
|
|
Da WaitForSingleObject auf das Ende des Prozesses wartet und nicht auf irgendwelche sichtbaren oder gar unsichtbaren Fenster, ist es völlig irrelevant ob der Prozess überhaupt ein Fenster öffnet. Relevant ist nur, wie lange das Prozess-Handle lebendig bleibt. Man kann damit auch auf ganz andere Objekte warten (Threads, Signale, Semaphore, Critical Sections), aber Fenster gehören nicht dazu. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1213 Wohnort: Ruhrpott
|
Verfasst am: 07.06.2017, 19:04 Titel: |
|
|
Stimmt. Ich hatte beim ersten Versuch dwProcessId statt hProcess als Handle übergeben, daher meine Zweifel. Aber so geht's:
Code: | #Include "windows.bi"
Dim As STARTUPINFO si
Dim As PROCESS_INFORMATION pi
Dim As String PrgName
PrgName = """C:\Program Files (x86)\Java\jre1.8.0_121\bin\javaw.exe"" -ea -jar ""G:\javafo.jar"" ""G:\javafo_in.txt"" -p > ""G:\javafo_out.txt"" -w"
GetStartupInfo(@si)
si.dwFlags = STARTF_USESHOWWINDOW
si.wShowWindow = SW_HIDE
CreateProcess(0,PrgName,0,0,TRUE,CREATE_NEW_CONSOLE,0,0,@si,@pi)
WaitForSingleObject(pi.hProcess, INFINITE) |
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1041 Wohnort: Niederbayern
|
Verfasst am: 07.06.2017, 21:55 Titel: |
|
|
grindstone hat Folgendes geschrieben: | Stimmt. Ich hatte beim ersten Versuch dwProcessId statt hProcess als Handle übergeben, daher meine Zweifel. Aber so geht's:
Code: | #Include "windows.bi"
Dim As STARTUPINFO si
Dim As PROCESS_INFORMATION pi
Dim As String PrgName
PrgName = """C:\Program Files (x86)\Java\jre1.8.0_121\bin\javaw.exe"" -ea -jar ""G:\javafo.jar"" ""G:\javafo_in.txt"" -p > ""G:\javafo_out.txt"" -w"
GetStartupInfo(@si)
si.dwFlags = STARTF_USESHOWWINDOW
si.wShowWindow = SW_HIDE
CreateProcess(0,PrgName,0,0,TRUE,CREATE_NEW_CONSOLE,0,0,@si,@pi)
WaitForSingleObject(pi.hProcess, INFINITE) |
Gruß
grindstone | Das Beispiel funktioniert bei mir irgendwie nicht? Es wird weder eine Datei geöffnet noch eine Fehlermeldung angezeigt. Ich weiß jetzt nicht, was zu 100% von den Beispielen funktioniert???
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1213 Wohnort: Ruhrpott
|
Verfasst am: 08.06.2017, 10:15 Titel: |
|
|
Sehr seltsam! Bist du sicher, daß dein Kommandozeilenstring korrekt ist? Hänge an den geposteten Code mal die Zeilen Code: | Print pi.hProcess
Sleep | an. Wenn das Handle 0 ist, wurde kein Prozess gestartet.
Ansonsten versuche mal, SW_HIDE durch SW_NORMAL zu ersetzen. Dann wird das Fenster des aufgerufenen Prozesses sichtbar.
Ich habe zum Testen diesen kleinen Programmschnippsel benutzt: Code: | Open ExePath + "\test.bi" For Output As #1
Print #1, Command(1)
Print #1, Command(2)
Print #1, Command(3)
Print #1, Command(4)
Print #1, Command(5)
Print #1, Command(6)
Print #1, Command(7)
Print #1, Command(8)
Print #1, Command(9)
Print #1, Command(10)
Print #1, "OK"
? "OK"
Close
Sleep 5000 |
Unter dem Namen "t2.bas" in dasselbe Verzeichnis compilieren wie das aufrufende Programm und dann dort die Zeile mit PrgName... in Code: | PrgName = ExePath + "\t2.exe eins zwei drei vier fünf sechs sieben acht neun zehn" | ändern. War der Test erfolgreich, enthält die neu angelegte Datei "test.bi" alle Kommandozeilenparameter von "eins" bis "zehn".
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1041 Wohnort: Niederbayern
|
Verfasst am: 09.06.2017, 02:24 Titel: |
|
|
grindstone hat Folgendes geschrieben: | Sehr seltsam! Bist du sicher, daß dein Kommandozeilenstring korrekt ist? Hänge an den geposteten Code mal die Zeilen Code: | Print pi.hProcess
Sleep | an. Wenn das Handle 0 ist, wurde kein Prozess gestartet.
Ansonsten versuche mal, SW_HIDE durch SW_NORMAL zu ersetzen. Dann wird das Fenster des aufgerufenen Prozesses sichtbar.
Ich habe zum Testen diesen kleinen Programmschnippsel benutzt: Code: | Open ExePath + "\test.bi" For Output As #1
Print #1, Command(1)
Print #1, Command(2)
Print #1, Command(3)
Print #1, Command(4)
Print #1, Command(5)
Print #1, Command(6)
Print #1, Command(7)
Print #1, Command(8)
Print #1, Command(9)
Print #1, Command(10)
Print #1, "OK"
? "OK"
Close
Sleep 5000 |
Unter dem Namen "t2.bas" in dasselbe Verzeichnis compilieren wie das aufrufende Programm und dann dort die Zeile mit PrgName... in Code: | PrgName = ExePath + "\t2.exe eins zwei drei vier fünf sechs sieben acht neun zehn" | ändern. War der Test erfolgreich, enthält die neu angelegte Datei "test.bi" alle Kommandozeilenparameter von "eins" bis "zehn".
Gruß
grindstone |
Code: | 012
022
032
042
052
062 12
072 12
092 Swiss System
102
122
132
XXR 7
XXC white1
001 1 mGM Kasparov, Garry 2812 RUS 4100018 1963 0.0 1
001 2 mGM Kramnik, Vladimir 2811 RUS 4101588 1975 0.0 2
001 3 mIM Bastian, Herbert 2299 GER 4601700 1952 0.0 3
001 4 m Wimmer, Miroslav 2162 CZE 320854 1958 0.0 4
001 5 m Lenhard, Martin 2072 GER 4671759 1976 0.0 5
001 6 m Barreto Bastidas, Jose Angel 2015 VEN 3904644 1998 0.0 6
001 7 m Bastian, Holger, Dr. 1798 GER 12940283 1961 0.0 7
001 8 m Bauer, Erwin 1499 AUT 1999 0.0 8
001 9 m B. Nagy, Roland 1481 HUN 770949 1999 0.0 9
001 10 m Barreto, Gabriel Menna 1416 BRA 2162873 1947 0.0 10
001 11 m Wingard, Viviana 1349 HUN 763322 2000 0.0 11
001 12 m Zyznowska, Marianna 1077 POL 21857814 2004 0.0 12
|
Print pi.hProzess zeigt mir eine Nummer an, aber es wird kein Prozess aufgerufen! SW_NORMAL bringt kein Fenster! Zum Test für euch: obige Zeilen als javafo_in.txt abspeichern und das Programm JaVaFo ausprobieren!
Inhalt der Batchdatei:
Code: | "C:\Program Files (x86)\Java\jre1.8.0_131\bin\javaw.exe" -ea -jar "G:\javafo.jar" "G:\javafo_in.txt" -p > "G:\javafo_out.txt" -w |
Pfad entsprechend ändern.
Bei mir klappt das mit eurem Beispiel nicht! Allerdings habe ich es mit folgendem Code zum laufen gebracht:
Code: | ShellExecute(NULL, "open", "javafo.bat", NULL, NULL, SW_HIDE)
' Warten funktioniert nicht?
' WaitForSingleObject(pi.hProcess, INFINITE)
' Trick 17 anwenden!
DO
IF FILEEXISTS("javafo_out.txt") THEN NAME "javafo_out.txt", "javafo_ou.txt"
IF FILEEXISTS("javafo_ou.txt") THEN EXIT DO
SLEEP 10
LOOP
DO
IF FILEEXISTS("javafo_ou.txt") THEN NAME "javafo_ou.txt", "javafo_out.txt"
IF FILEEXISTS("javafo_out.txt") THEN EXIT DO
SLEEP 10
LOOP |
_________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1213 Wohnort: Ruhrpott
|
Verfasst am: 09.06.2017, 22:53 Titel: |
|
|
Irgendwie mag Java die CeateProcess - Funktion nicht. Nachdem ich es geschafft habe, die Standardausgabe in eine Datei umzuleiten (die Vererbung von Securityattributen ist wirklich etwas seeeehr schönes ), steht dort drin:Error in processing (java.lang.NullPointerException)
Ask for help to javafo@rrweb.org
Um es mal mit Troubadix zu sagen: "Mein Latein ist nun zuende".
Gruß
grindstone
EDIT:
Und sie bewegt sich doch! (um es mal mit Galilei zu sagen ) So funktioniert es (zumindest bei mir, Pfade bitte entsprechend anpassen): Code: | #Include "windows.bi"
Dim As STARTUPINFO si
Dim As PROCESS_INFORMATION pi
Dim As SECURITY_ATTRIBUTES sa
Dim As HANDLE hOutFile
Dim As String PrgName
'set security attributes
sa.nLength = SizeOf(SECURITY_ATTRIBUTES)
sa.lpSecurityDescriptor = NULL 'use default descriptor
sa.bInheritHandle = TRUE
PrgName = "C:\Programme\Java\jre7\bin\javaw.exe -ea -jar G:\JaVaFo\javafo.jar G:\JaVaFo\javafo_in.txt -p"
hOutFile = CreateFile("G:\JaVaFo\javafo_out.txt", _
GENERIC_WRITE, _
NULL, _
@sa, _
CREATE_ALWAYS, _
FILE_ATTRIBUTE_NORMAL, _
NULL)
GetStartupInfo(@si)
si.dwFlags = STARTF_USESTDHANDLES
si.hStdOutput = hOutFile
CreateProcess(0,PrgName,0,0,TRUE,CREATE_NEW_CONSOLE,0,0,@si,@pi)
WaitForSingleObject(pi.hProcess, INFINITE)
CloseHandle(pi.hProcess)
CloseHandle(pi.hThread)
CloseHandle(hOutFile) |
_________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1041 Wohnort: Niederbayern
|
Verfasst am: 09.06.2017, 23:22 Titel: |
|
|
grindstone hat Folgendes geschrieben: | Irgendwie mag Java die CeateProcess - Funktion nicht. Nachdem ich es geschafft habe, die Standardausgabe in eine Datei umzuleiten (die Vererbung von Securityattributen ist wirklich etwas seeeehr schönes ), steht dort drin:Error in processing (java.lang.NullPointerException)
Ask for help to javafo@rrweb.org
Um es mal mit Troubadix zu sagen: "Mein Latein ist nun zuende".
Gruß
grindstone |
Bis zu dieser Fehlermeldung kam ich auch schon. Deswegen verwende ich ja diese Batchdatei! Anscheinend geht es anders nicht? Nun gut, ich habe ja jetzt was funktionierendes. Immerhin etwas...
Da hätte man glatt einen kleinen Wettbewerb draus machen können! Wer schaffts als erster, das Ding ohne Fenster zum laufen zu bringen?
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1213 Wohnort: Ruhrpott
|
Verfasst am: 10.06.2017, 00:47 Titel: |
|
|
Die Ursache für den o.g. Fehler habe ich auch gefunden: Ich hatte beim Herumprobieren den Inhalt der Datei javafo_in.txt gelöscht (leere Datei mit 0 Bytes) . Nachdem ich die Daten wieder hineinkopiert hatte, ging es (siehe EDIT).
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1041 Wohnort: Niederbayern
|
Verfasst am: 10.06.2017, 15:48 Titel: |
|
|
grindstone hat Folgendes geschrieben: | Die Ursache für den o.g. Fehler habe ich auch gefunden: Ich hatte beim Herumprobieren den Inhalt der Datei javafo_in.txt gelöscht (leere Datei mit 0 Bytes) . Nachdem ich die Daten wieder hineinkopiert hatte, ging es (siehe EDIT).
Gruß
grindstone | Das klingt ja interessant! Ich werde es auf jeden Fall mal testen, das Beispiel. Meins funktioniert zwar auch, aber das andere dürfte etwas schneller sein. Wie ist es jetzt mit:
Zitat: | Nebenbei: Java wird normalerweise immer in %PATH% (Suchweg) eingetragen, womit kein absoluter Pfad eingetragen werden muss, der mit jedem Update der JRE (Java Runtime Environment) wechselt. | Im Quellcode will ich den Pfad jetzt nicht grad drin haben wollen.
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1213 Wohnort: Ruhrpott
|
Verfasst am: 10.06.2017, 22:54 Titel: |
|
|
Wenn der erste Parameter (lpApplicationName) von CreateProcess NULL ist und der Programmname im zweiten Parameter (lpCommandLine) ohne Pfad angegeben wird, so werden (auch) die in %PATH% angegebenen Pfade nach der Programmdatei durchsucht. Mit Code: | PrgName = "javaw.exe -ea -jar G:\JaVaFo\javafo.jar G:\JaVaFo\javafo_in.txt -p" | läuft das o.g. Beispiel also ebenfalls (siehe auch https://msdn.microsoft.com/en-us/library/ms682425.aspx).
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1041 Wohnort: Niederbayern
|
Verfasst am: 03.07.2017, 22:46 Titel: |
|
|
grindstone hat Folgendes geschrieben: | Wenn der erste Parameter (lpApplicationName) von CreateProcess NULL ist und der Programmname im zweiten Parameter (lpCommandLine) ohne Pfad angegeben wird, so werden (auch) die in %PATH% angegebenen Pfade nach der Programmdatei durchsucht. Mit Code: | PrgName = "javaw.exe -ea -jar G:\JaVaFo\javafo.jar G:\JaVaFo\javafo_in.txt -p" | läuft das o.g. Beispiel also ebenfalls (siehe auch https://msdn.microsoft.com/en-us/library/ms682425.aspx).
Gruß
grindstone |
Ich habe das ganze jetzt mal mit 2000 Teilnehmern getestet. Für die Auslosung der 1. Runde brauchte er ca. 10 Minuten!!! Das ist mir etwas zu lang. Aber es funktioniert! Jetzt muss ich nur noch schauen, dass das ganze schneller wird. An JaVaFo liegt es nicht! Am TRF-File auch nicht. An was dann? Werde noch ein paar Test machen...
Edit:
Der Sortieralgorithmus in meinem Programm ist die Bremse! Toll! Ganz toll.
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|