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/)
-   -   Delphi TNA - Problem (https://www.delphipraxis.net/116327-tna-problem.html)

Dbof 26. Jun 2008 20:48


TNA - Problem
 
Hallo und sorry für den häßlichen Titel, aber ich kann das Problem selbst nicht beschreiben...
ich habe folgendes Programm, in dem ich mit Button1 die TNA in mein Form ziehe und dabei auch die Taskleiste verstecke. Mit Button2 mache ich beides rückgängig.

Delphi-Quellcode:
Procedure TForm1.Button1Click(Sender: TObject);
Begin
   TNAHandle := GetHandle;
   TBHandle := FindWindow('Shell_TrayWnd', Nil);
   OriginTB := Windows.GetParent(TBHandle);
   OriginParent := Windows.GetParent(TNAHandle);
   Windows.SetParent(TNAHandle, Self.Handle);
   HideTaskBar(true);
End;

Procedure TForm1.Button2Click(Sender: TObject);
Begin
   Windows.SetParent(TNAHandle, OriginParent);
   HideTaskBar(false);
End;

Function TForm1.GetHandle: HWND;
Begin
   Result := FindWindow('Shell_TrayWnd', Nil);
   Result := FindWindowEx(Result, 0, 'TrayNotifyWnd', Nil);
   Result := FindWindowEx(Result, 0, 'Syspager', Nil);
   Result := FindWindowEx(Result, 0, 'ToolbarWindow32', 'Infobereich');
End;

procedure TForm1.HideTaskBar(State : Boolean);
Begin
  If State = true then
      ShowWindow(TBHandle, SW_Hide)
  Else If State = false then
      ShowWindow(TBHandle, SW_Show);
  end;
end.
Nun das Problem: Ich klicke 2-mal den Button1. Die Taskleiste bleibt versteckt, die TNA wird im Form angezeigt. Bei Klick auf Button2 wird die Taskleiste wieder angezeigt, doch die TNA bleibt in meiner Form...und bewegt sich von dort auch nicht fort, bis ich explorer.exe beende und neustarte.

Ist das Problem, dass ich SetParent nicht 2-mal aufrufen kann? Kann man das Problem leichter lösen als eine Art Afrage zu machen, ob die TNA enthalten ist oder nicht?


Danke im Voraus!



P.S. Bin völliger Anfänger, habe den Funktionschnipsel GetHandle im Forum gefunden. Die Bezeichnungen Button1 usw. werden im HauptProgramm nicht enthalten sein, sondern stark verändert...

Dbof 27. Jun 2008 20:07

Re: TNA - Problem
 
Vielleicht war die Frag unverständlich :oops: , also nochmal:

Wieso bleibt die TNA beim 2-maligen klicken auf Button1 auf meiner Form fixiert :| :?:


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