Sendmessage Explorer öffnen
Hallo Freunde!
Kann mir mal jemand einen Tipp geben? Ich würde gerne den Windows Explorer per SendMessage öffnen, den Titel des Fensters um einen String ergänzen. Danach würde ich gerne die Ansicht filtern, oder selektieren. Ich weiß nicht, was geht, oder wo ich das nachlesen kann. Am liebsten wäre mir, ich könnte in diesem Fenster nur bestimmte Dateien und ordner anzeigen. Wo muss ich nachlesen, was muss ich tun? Peter |
AW: Sendmessage Explorer öffnen
Sendmessage an wen sollte eine Anwendung starten?
AFAIK wirst Du eine Filterung wie gewünscht mit dem Explorer nicht hinbekommen ... Was (nimm mal an mit dem Explorer ginge es nicht) brauchst Du, gegf. wofür, viellicht gibt es andere Ansätze |
AW: Sendmessage Explorer öffnen
Hallo Bummi!
Ich möchte den Windows Explorer starten. Ich weiß das ich den Explorer über ShellExecute aufrufen kann und mittels BEfehlszeilenparameter auch dazu bringen kann, eine oder mehrere Dateien zu selektieren. Wenn ich sowas per SendMessage hinbekommen könnte, und dann noch den Fenster Titel abändere wäre ich schon ziemlich weit. Hier noch der Link zum MSDN [MSDN]http://support.microsoft.com/kb/130510/de[/MSDN] Peter |
AW: Sendmessage Explorer öffnen
Der Aufruf per Shellexecute oder per CreateProcess ist klar, die Caption wenn sie je nach Windowsversion noch vorhanden ist per Sendmessage ändern ist auch klar, wie Du allerdings per reinem SendMessage da hin kommen willst ist mir völlig unklar...
|
AW: Sendmessage Explorer öffnen
Naja, die Idee stammt daher, das ich mit Sendmessage auf jedes Fenster zugreifen kann das in Windows existiert. Würde ich also einen Explorer starten könnte ich das FensterHandle ermitteln - nur wie es dann weiter geht ist mir unklar.
|
AW: Sendmessage Explorer öffnen
wenn ich statt explorer.exe, Notepad.exe verwende bekomme ich das erwartete.
Mit explorer.exe funktioniert der Aufruf, vom SetText bekommt man unter Windows 7 allerdings nichts mit, vielleicht hilft es Dir als Basis zum basteln ...
Delphi-Quellcode:
unit Unit3;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, OleCtrls, SHDocVw; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } PID:DWord; public { Public-Deklarationen } end; var Form1: TForm1; implementation var s:String; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); const NameDesProgramms = 'C:\windows\explorer.exe'; var StartupInfo: TStartupInfo; ProcessInfo: TProcessInformation; begin ZeroMemory(@StartupInfo, SizeOf(StartupInfo)); StartupInfo.cb := SizeOf(StartupInfo); StartupInfo.dwFlags := STARTF_USESHOWWINDOW; StartupInfo.wShowWindow := SW_SHOW; if CreateProcess( PChar(NameDesProgramms),' /select,c:\windows\system32\calc.exe',nil, nil, false, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo) then try PID := ProcessInfo.dwProcessId; //PID ist eine private DWORD-Variable finally CloseHandle(ProcessInfo.hProcess); CloseHandle(ProcessInfo.hThread); end; end; type PEnumInfo = ^TEnumInfo; TEnumInfo = record ProcessID: DWORD; HWND: THandle; end; function EnumWindowsProc(Wnd: DWORD; var EI: TEnumInfo): Bool; stdcall; var PID: DWORD; begin GetWindowThreadProcessID(Wnd, @PID); Result := (PID <> EI.ProcessID) or (not IsWindowVisible(WND)) or (not IsWindowEnabled(WND)); if not Result then EI.HWND := WND; end; function FindMainWindow(PID: DWORD): DWORD; var EI: TEnumInfo; begin EI.ProcessID := PID; EI.HWND := 0; EnumWindows(@EnumWindowsProc, Integer(@EI)); Result := EI.HWND; end; procedure TForm1.Button2Click(Sender: TObject); var wnd:Hwnd; begin if PID <> 0 then begin wnd:=FindMainWindow(PID); if WND<>0 then begin s := 'Test'; SendMessage(wnd,wm_Settext,0,Integer(@s[1])); end; end; end; end. |
AW: Sendmessage Explorer öffnen
Hallo Thomas,
vielen Dank für dein Beispiel. Ich werde mich da mal reindenken und herumspielen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23: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