Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi seltsames Problem mit Messages unter w2k (https://www.delphipraxis.net/47084-seltsames-problem-mit-messages-unter-w2k.html)

FriFra 6. Jun 2005 13:55


seltsames Problem mit Messages unter w2k
 
Ich hab ein Programm, welches mit einer Hilfsapplikation über Messages (SendMessageTimeout) kommuniziert. Das ganze läuft seit jahren auf zahlreichen PC's (Win9.x, 2000, XP)...
Heute hab ich bei einem Kunden mit Windows2000 ein seltsames Problem. Sobald mein Hauptprogramm eine Message sendet hängt es, obwohl ich zum Senden einen Timeout von max 5 Sekunden festgelegt habe :roll: . Das Problem habe ich, wie gesagt, noch nie gehabt und weiss daher im Moment nicht was unter Windows das versenden der Messages behindern könnte bzw. warum der Timeout nicht funktioniert :gruebel: ?

Das es an den Messages hängt, kann man sehr gut sehen... sobald ich das Hilfsprogramm über den Taskmanager abschiesse reagiert das Hauptprogramm wieder normal...

Delphi-Quellcode:
procedure TMainApp_Main.MySendHelperApp(MyMessage: string; TimeOut: cardinal);
var
  MyCopyDataStruct: TCopyDataStruct;
  hTargetWnd: HWND;
  result: cardinal;
begin
  hTargetWnd := 0;
  with MyCopyDataStruct do
  begin
    dwData := 0; // may use a value do identify content of message
    cbData := StrLen(PChar(MyMessage)) + 1;
    lpData := PChar(MyMessage)
  end;
  hTargetWnd := FindWindow(PChar('THelperApp_Main'), nil);
  if hTargetWnd <> 0 then
  begin
    CCursor := Screen.Cursor;
    Screen.Cursor := crHourGlass;
    SendMessageTimeout(hTargetWnd, WM_COPYDATA, Longint(Handle),
      Longint(@MyCopyDataStruct), SMTO_ABORTIFHUNG, TimeOut, result);
    Screen.Cursor := CCursor;
  end;
end;

Bernhard Geyer 6. Jun 2005 14:00

Re: seltsames Problem mit Messages unter w2k
 
WM_COPYDATA - Es gibt diverse Programme (Hilfstools von Grafikkarten oder Remoting-Software, Hydravision DesktopManager) welche diese Message falsch behandeln und teilweise einfach wegschmeißen). Kannst Du eine eigene definierte WM-Message-Id definieren/verwenden?

FriFra 6. Jun 2005 14:06

Re: seltsames Problem mit Messages unter w2k
 
Eine eigene Message könnte ich schon definieren... Aber ich verstehe nicht, warum das ganze Programm nach versenden Hängt, obwohl es doch einen Timeout gibt?

Bernhard Geyer 7. Jun 2005 07:17

Re: seltsames Problem mit Messages unter w2k
 
Solche Programme hängen sich teilweise so tief im System rein das auch solche eigentlich "Müßte Doch Immer Funktionieren"-Features davon betroffen sein können.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz