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/)
-   -   SendNotifyMessage und Admin Mode (https://www.delphipraxis.net/193101-sendnotifymessage-und-admin-mode.html)

UliBru 20. Jun 2017 10:36

SendNotifyMessage und Admin Mode
 
Ich habe ein weiteres Problem mit zwei kommunizierenden Programmen, wenn eines im Admin-Mode läuft (ja, es gibt Anwender die das aus welchen Gründen auch immer tun).

Das erste Programm (C++) sendet an das zweite Kommandos per SendNotifyMessage (non-blocking mit anschliessendem Timeout):
Code:
  SendNotifyMessage(hSendMessageToClient,WM_COMMAND,0,kWM_COMMAND);
  waitResult = WaitForSingleObject(hCommand1Done,250);
Das zweite Programm verwendet dazu dann einen Handler mit
Delphi-Quellcode:
const
  WM_COMMAND = WM_USER + 77;
...
    procedure CommandHandler(var Msg: TMessage); message WM_COMMAND1;
...
procedure TMainForm.CommandHandler(var Msg: TMessage);
begin
  case Msg.LParamLo of
    kWM_COMMAND1:
      begin
        ProcessCommand;
        SetEvent(hCommand1Done);
      end;
    ...
  end;
end;
Das klappt alles. Prog2 antwortet innerhalb des TimeOuts und Prog1 läuft korrekt weiter.
Wenn nun aber das Prog2 im Admin-Mode läuft, dann wird der CommandHandler nicht mehr aufgerufen, bekommt also anscheinend die Message nicht mehr. Demzufolge erfolgt auch keine Rückmeldung und das Prog1 geht in den Fehlermodus.

Meine simple Frage hierzu: warum stopt der Admin-Mode das Messaging und was dagegen tun?

Grüsse
Uli

Bernhard Geyer 20. Jun 2017 10:40

AW: SendNotifyMessage und Admin Mode
 
Zitat:

Zitat von UliBru (Beitrag 1374955)
Wenn nun aber das Prog2 im Admin-Mode läuft, dann wird der CommandHandler nicht mehr aufgerufen, bekommt also anscheinend die Message nicht mehr. Demzufolge erfolgt auch keine Rückmeldung und das Prog1 geht in den Fehlermodus.

Das ist AS Designed seit Vista. Viren und Würmer sei dank.


Zitat:

Zitat von UliBru (Beitrag 1374955)
Meine simple Frage hierzu: warum stopt der Admin-Mode das Messaging und was dagegen tun?

Ich hoffe man kann dagegen gar nichts machen. Das wurd von MS eingebaut damit nicht eine Virus über fingierte Messages den Virenscanner/Firewall abschalten kann.
Du wirst dein Programm umbauen mussen damit andere (legitime) Kommunikationsmöglichkeiten verwendet werden.

UliBru 20. Jun 2017 11:26

AW: SendNotifyMessage und Admin Mode
 
Danke. Einleuchtend. Auf Basis der Antwort habe ich denn auch was dazu gefunden, Stichwort UIPI
Ich muss es auch nicht unbedingt ändern. Eine sinnvolle Erklärung für den Anwender reicht auch. Das Programm ist nicht für den Admin-Mode vorgesehen, er wird auch nicht benötigt.

Grüsse
Uli

PS: theoretisch/praktisch geht es wohl mit ChangeWindowMessageFilter, aber es wird davor gewarnt.

himitsu 20. Jun 2017 12:14

AW: SendNotifyMessage und Admin Mode
 
Ich hab vergessen wie die API heißt, aber man kann Messages freischalten, damit sie nicht gesperrt werden. (wird z.B. für Copy&Paste und Drag&Drop gern mal freigegeben)

[edit]
Vor dem Mittag vergessen abzusenden und nun steht's schon da.
ChangeWindowMessageFilter


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:38 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