AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Handle auf Vista unter XP nicht gefunden

Ein Thema von TonyR · begonnen am 30. Mai 2008 · letzter Beitrag vom 30. Mai 2008
Antwort Antwort
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#1

Handle auf Vista unter XP nicht gefunden

  Alt 30. Mai 2008, 17:26
Hi Leute,

Ich hoffe, dass ist keine dumme Anfängerfrage aber ich schließe ein Fenster mit folgendem Code:
Delphi-Quellcode:
procedure TForm1.button1click(Sender: TObject);
var h: Thandle;
begin
h:=Findwindow(nil,'Fenstername');
if h<>0 then
  PostMessage(h, WM_SYSCOMMAND, SC_CLOSE, 0);
end;
Ein und dasselbe Fenster mit ein und demselben Code/Programm funktioniert auf Vista einwandfrei, jedoch auf dem XP Home System meines Vaters nicht.
Es scheitert übrigens am finden des Handles, also das PostMessage wird auf jenem XP System gar nicht ausgeführt.
Ich habe das Programm mit Delphi 6 unter Vista kompiliert.

Danke schonmal für eure Hilfe.
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Handle auf Vista unter XP nicht gefunden

  Alt 30. Mai 2008, 17:38
Versuch es mal mit WinSpy, irgendeinen Grund muss es ja haben, dass das Fenster nicht gefunden wird.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Handle auf Vista unter XP nicht gefunden

  Alt 30. Mai 2008, 17:48
Ist das Fenster eventuell minimiert? Vielleicht existiert es ja zu dem Zeitpunkt wirklich nicht (Die Klasse zwar schon aber da eventuell noch nichts angezeigt wurde das Fenster eben nicht).
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
454 Beiträge
 
Delphi XE4 Professional
 
#4

Re: Handle auf Vista unter XP nicht gefunden

  Alt 30. Mai 2008, 17:49
in deiner Unit steht ja:

Code:
type
  TForm1 = class(TForm)
...

var
  Form1: TForm1;

...ich würde da reinschreiben:


Code:
type
  TMein_Programm = class(TForm)
...

var
  Mein_Programm : TMein_Programm ;

und finden kannst dann das Fenster mit:

Code:
FindWindow('TMein_Programm ', nil)
Erich Wanker - for life:=1971 to lebensende do begin ..
  Mit Zitat antworten Zitat
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Handle auf Vista unter XP nicht gefunden

  Alt 30. Mai 2008, 17:53
Ich will ja ein externes Fenster schließen .....

Das Fenster ist vom BorderStyle ein Dialog.
Wenn ich paar mal auf den Button klick oder Periodisch erneut nach dem fenster Suche (es öffnet sich in den Vordergrund, wie ein Popup) passiert ja auch nichts,
wie gesagt auf meinem Vista funktionierts ...

PS: Wie muss man Win-Spy benutzen?
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Handle auf Vista unter XP nicht gefunden

  Alt 30. Mai 2008, 18:02
Zitat von TonyR:
PS: Wie muss man Win-Spy benutzen?
Starten, "Fokus folgen" und das Fenster anklicken. Anschließend kannst Du über "Tools - Code Generator" den entsprechenden Delphi-Code generieren lassen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
454 Beiträge
 
Delphi XE4 Professional
 
#7

Re: Handle auf Vista unter XP nicht gefunden

  Alt 30. Mai 2008, 18:06
..vieleicht hab ich dich mißverstanden..

Wenn das Fenster ein´s von deinen ist.. dann lieg ich mit meiner Antwort richtig...

Wenn das Fenster von einer anderen Anwendung (Word, Excel Acrobat ect..) ist,
dann würd ich, wenn das Fenster den Focus hat:


Code:
var
SelfId : DWord;
ThreadId: DWord;
Attached: Boolean;
Fokus : HWnd;

begin


SelfId := GetCurrentThreadId;
ThreadId := GetWindowThreadProcessId(GetForegroundWindow, nil);

Attached := False;
if (ThreadId <> 0) and (ThreadId <> SelfId) then
Attached := AttachThreadInput(SelfId, ThreadId, True);

if Attached xor (ThreadId = SelfId) then
try
Fokus := GetFocus;
SendMessage(Fokus, WM_WassAuchImmer...



Wenn das Fenster von einer anderen Anwendung (Word, Excel Acrobat ect..) ist,
dann würd ich, wenn das Fenster NICHT den Focus hat:


Code:
function FindWindowByTitle(WindowTitle: string): Hwnd;
var
  NextHandle: Hwnd;
  NextTitle: array[0..260] of char;
begin
  NextHandle := GetWindow(Application.Handle, GW_HWNDFIRST);
  while NextHandle > 0 do
  begin
    GetWindowText(NextHandle, NextTitle, 255);
    if Pos(WindowTitle, StrPas(NextTitle)) <> 0 then
    begin
      Result := NextHandle;
      Exit;
    end
    else
     NextHandle := GetWindow(NextHandle, GW_HWNDNEXT);
  end;
  Result := 0;
end;








(c) by diversen Newsgroupusern ...


HTH

Erich
Erich Wanker - for life:=1971 to lebensende do begin ..
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#8

Re: Handle auf Vista unter XP nicht gefunden

  Alt 30. Mai 2008, 18:07
Hallo,

ich will ja niemanden für dumm verkaufen, aber vielleicht
gibt es unter XP das Fenster mit dem im Code angegebenen
Caption-Text einfach nicht.



vorsichtshalber mal in Deckung geh
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Handle auf Vista unter XP nicht gefunden

  Alt 30. Mai 2008, 19:34
Helmi

Hi Erich, also danke für deine Mühe, ich probier's nochmal mit dem Durchsehen aller Windows (deine zweite Variante) ...

Und seh mir mal WinSpy an.
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:32 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