Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   64bit SC_CLOSE? (https://www.delphipraxis.net/153735-64bit-sc_close.html)

youuu 13. Aug 2010 23:10

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

Mschmidt 14. Aug 2010 08:57

AW: 64bit SC_CLOSE?
 
meines wissens nach wird bei Send/PostMessage nicht zwischen 32-/64 Bit unterschieden :roll:

Poste doch mal den Code.

:-mschmidt

youuu 14. Aug 2010 09:03

AW: 64bit SC_CLOSE?
 
Delphi-Quellcode:
if (h <> 0) then // Wenn Anwendung gefunden ....
  SendMessage(h, WM_SYSCOMMAND, SC_CLOSE, 0);
Unter 32Bit funktionierte es einwandfrei.
Habe auch zum Test

Delphi-Quellcode:
if (h <> 0) then // Wenn Anwendung gefunden ....
Begin
  SendMessage(h, WM_SYSCOMMAND, SC_CLOSE, 0);
  Showmessage('found');
end;
verwendet um zu schauen, ob er die Anwendung einfach nicht findet, allerdings poppte
Delphi-Quellcode:
Showmessage('found');
auf. Nur geschlossen hat er es nicht

Daniela.S 14. Aug 2010 09:59

AW: 64bit SC_CLOSE?
 
Ein Handle ist doch vom Typ LongWord, also 32Bit.
Vielleicht ist unter Win64 ein Handle 64Bit?

Mschmidt 14. Aug 2010 10:17

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

turboPASCAL 14. Aug 2010 10:29

AW: 64bit SC_CLOSE?
 
Delphi-Quellcode:
var
  WndHande: HWND; // HWND => DWORD => Cardinal
if (WndHande <> 0) then // Wenn Anwendung gefunden ....
begin
  SendMessage(WndHande, WM_SYSCOMMAND, SC_CLOSE, 0);
end;
Soweit, so gut.
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);

youuu 14. Aug 2010 13:08

AW: 64bit SC_CLOSE?
 
Delphi-Quellcode:
SendMessage(h, WM_CLOSE, 0, 0);
funktioniert leider auch nicht.

hathor 14. Aug 2010 13:19

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.
http://msdn.microsoft.com/de-de/library/bb979347.aspx

turboPASCAL 14. Aug 2010 13:24

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.

youuu 14. Aug 2010 14:06

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:
var
  h: hwnd;
begin
  h := FindWindowByTitle('Windows-Sicherheitswarnung');
  if (h <> 0) then // if we found
    POSTMESSAGE(h, WM_SYSCOMMAND, SC_CLOSE, 0);
end;
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.

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 22:26 Uhr.
Seite 1 von 2  1 2      

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