![]() |
64bit SC_CLOSE?
Hi,
ist es möglich mit SC_CLOSE ein Fenster auf einen 64Bit System zu schließen? bei mir passiert leider rein gar nichts. System: Windows Server Web 64Bit |
AW: 64bit SC_CLOSE?
meines wissens nach wird bei Send/PostMessage nicht zwischen 32-/64 Bit unterschieden :roll:
Poste doch mal den Code. :-mschmidt |
AW: 64bit SC_CLOSE?
Delphi-Quellcode:
Unter 32Bit funktionierte es einwandfrei.
if (h <> 0) then // Wenn Anwendung gefunden ....
SendMessage(h, WM_SYSCOMMAND, SC_CLOSE, 0); Habe auch zum Test
Delphi-Quellcode:
verwendet um zu schauen, ob er die Anwendung einfach nicht findet, allerdings poppte
if (h <> 0) then // Wenn Anwendung gefunden ....
Begin SendMessage(h, WM_SYSCOMMAND, SC_CLOSE, 0); Showmessage('found'); end;
Delphi-Quellcode:
auf. Nur geschlossen hat er es nicht
Showmessage('found');
|
AW: 64bit SC_CLOSE?
Ein Handle ist doch vom Typ LongWord, also 32Bit.
Vielleicht ist unter Win64 ein Handle 64Bit? |
AW: 64bit SC_CLOSE?
hmmm, ein HWND ist deklariert als typedef HANDLE HWND. Handle ist deklariert als typedef PVOID HANDLE.
Pvoid ist also ein Zeiger auf irgentwas (wenn mich meine C Kenntnisse jetzt nicht verlassen haben :-) ) Das würde es aber immer nocht nicht erklären. :-mschmidt |
AW: 64bit SC_CLOSE?
Delphi-Quellcode:
Soweit, so gut.
var
WndHande: HWND; // HWND => DWORD => Cardinal if (WndHande <> 0) then // Wenn Anwendung gefunden .... begin SendMessage(WndHande, WM_SYSCOMMAND, SC_CLOSE, 0); end; Nun kommt es darauf an ob das Fenster (die Application) auch auf WM_SYSCOMMAND und SC_CLOSE reagiert. Versuch doch mal:
Delphi-Quellcode:
SendMessage(WndHande, WM_CLOSE, 0, 0);
|
AW: 64bit SC_CLOSE?
Delphi-Quellcode:
funktioniert leider auch nicht.
SendMessage(h, WM_CLOSE, 0, 0);
|
AW: 64bit SC_CLOSE?
Wenn Dich die Rückmeldung von SENDMESSAGE nicht interessiert, dann nimm doch POSTMESSAGE !
Zitat: Im Allgemeinen ist PostMessage die sicherere Lösung, wenn es um die Übermittlung von Nachrichten an einen anderen Prozess oder Thread geht, weil SendMessage bei solch einer Aktion nämlich blockieren kann. ![]() |
AW: 64bit SC_CLOSE?
Poste doch mal ein Stück mehr Code, damit wir der sache mal auf den Grund gehen können.
Ins besondere wie du das Fensterhandle ermittelst u. ggf. was für ein Fenster du schliessen möchtest. |
AW: 64bit SC_CLOSE?
Selbst POSTMESSAGE tut einfach nichts :/
Delphi-Quellcode:
function FindWindowByTitle(WindowTitle: string): Hwnd;
var NextHandle: Hwnd; NextTitle: array[0..260] of char; begin // Get the first window NextHandle := GetWindow(Application.Handle, GW_HWNDFIRST); while NextHandle > 0 do begin // retrieve its text GetWindowText(NextHandle, NextTitle, 255); if Pos(WindowTitle, StrPas(NextTitle)) <> 0 then begin Result := NextHandle; Exit; end else // Get the next window NextHandle := GetWindow(NextHandle, GW_HWNDNEXT); end; Result := 0; end;
Delphi-Quellcode:
Diese Meldung ist erscheint leider jedesmal wenn ich auf eine bestimmte Domain gehe, obwohl diese normalerweise nicht erscheinen dürfte, aber darum geht es nicht.
var
h: hwnd; begin h := FindWindowByTitle('Windows-Sicherheitswarnung'); if (h <> 0) then // if we found POSTMESSAGE(h, WM_SYSCOMMAND, SC_CLOSE, 0); end; Auf einen 32Bit Windows 7 schließt sich die Nachricht korrekt, nur auf einen Windows Server WEB 64Bit passiert rein gar nicht, allerdingsfinden tut er das Handle schon. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz