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
. 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
?
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;
Elektronische Bauelemente funktionieren mit Rauch. Kommt der Rauch raus, geht das Bauteil nicht mehr.