Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Horrido,

In einem Service soll in einer Schleife WinExec die gleiche Exe mit unterschiedlichen Parametern mehrmals hintereinander aufrufen.

Dabei kommt es bei jedem Aufruf zu einer Wartezeit und anschliessender Meldung, wahrscheinlich wartet der aufrufende Prozess auf den Rückkehrcode.

Wie kann man dies unterdrücken, so das die Exe-Aufrufe hintereinander zügig erfolgen? Oder auch wie kann man WinExec überzeugen, nicht zu warten und hintereinander die Exe mehrmals aufrufen? Oder gibt es andere Alternativen dafür und wie ist das zu realisieren( ShellExec, CreateProcess...)?

Wäre wirklich dankbar für Tips

Gruß

ono

Hi Horrido,

das hier liefert die F1-Hilfe:

This function is provided for compatibility with 16-bit Windows. Win32-based applications should use the CreateProcess function.

Remarks

In Win32, the WinExec function returns when the started process calls the GetMessage function or a time-out limit is reached. To avoid waiting for the time out delay, call the GetMessage function as soon as possible in any process started by a call to WinExec.

Du solltest deshalb besser CreateProcess() verwenden.

Hossa, Klotzkopp und Manfred,

ersteinmal herzlichen Dank für die prompte Reaktion.

Also zum Code:

Es soll vom Dienst ein paar Clients ("client.exe")gestartet werden die jeweils an unterschiedlichen Ports lauschen, Prinzip:

OnStart(...)

...

WinExec("client.exe 5678", SW_HIDE);

WinExec("client.exe 7689", SW_HIDE);

WinExec("client.exe 4239", SW_HIDE);

Dabei wird dann bei jedem Aufruf eine Message generiert, in der Art "Access denied...". Dies wird sicherlich vom Service-Prozess ausgelöst, weil jeder Aufruf auf einen Rückkehrcode bis zum Time-Out wartet. Nach Quittierung der Message wird anstandslos der nächste Aufruf abgearbeitet, bis das Spielchen wie oben sich wiederholt.

Nun möchte ich natürlich, daß WinExec nicht wartet sondern hintereinander die Aufrufe abarbeitet.

Dabei bin ich inzwischen auch auf Manfreds Quelle gestoßen und probiere es mit der GetMessage() im Code der "client.exe". Nach dem Prinzip:

LPMSG lpMsg;

GetMessage( lpMsg, NULL, 0, 0);

Aber da heult das System darüber, daß lpMsg in der 2.Zeile nicht definiert ist?

Wenn das Problem mit CreateProcess() besser sich lösen läßt, wäre es prima, wenn Manfred einen kleinen Beispielcode hätte. Ich sehe leider noch nicht so richtig in der MSDN durch; dem Befehl ist auch kein Beispiel beigefügt. Oh diese Parameterliste, what is hi meaning??? ;-)

Gruß

ono

ono, lass das mit GetMessage. Du scheinst nicht genug von Windowsprogrammierung zu verstehen, als dass dich das weiterbringen würde.

Zu CreateProcess findest du hier im Forum jede Menge Beispiele.

Benutzer aber bitte nicht eine Schleife mit GetExitCodeProcess, um das Ende des Prozesses abzuwarten. Dafür gibt es WaitForSingleObject.

Ok,

dann werde ich mal zunächst hier nach CreateProcess() schauen.

Vielen Dank fürs erste

ono

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.