AGB  ·  Datenschutz  ·  Impressum  







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

Sendmessage Explorer öffnen

Ein Thema von DelphiPeter · begonnen am 23. Okt 2012 · letzter Beitrag vom 24. Okt 2012
Antwort Antwort
DelphiPeter

Registriert seit: 21. Dez 2007
Ort: Iserlohn
198 Beiträge
 
Delphi 2010 Professional
 
#1

Sendmessage Explorer öffnen

  Alt 23. Okt 2012, 19:41
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
Peter Majewski
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: Sendmessage Explorer öffnen

  Alt 23. Okt 2012, 19:49
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
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
DelphiPeter

Registriert seit: 21. Dez 2007
Ort: Iserlohn
198 Beiträge
 
Delphi 2010 Professional
 
#3

AW: Sendmessage Explorer öffnen

  Alt 23. Okt 2012, 20:10
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
Peter Majewski
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#4

AW: Sendmessage Explorer öffnen

  Alt 23. Okt 2012, 20:25
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...
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
DelphiPeter

Registriert seit: 21. Dez 2007
Ort: Iserlohn
198 Beiträge
 
Delphi 2010 Professional
 
#5

AW: Sendmessage Explorer öffnen

  Alt 23. Okt 2012, 20:32
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.
Peter Majewski

Geändert von DelphiPeter (23. Okt 2012 um 20:34 Uhr) Grund: Schreibfehler
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#6

AW: Sendmessage Explorer öffnen

  Alt 23. Okt 2012, 21:48
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.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
DelphiPeter

Registriert seit: 21. Dez 2007
Ort: Iserlohn
198 Beiträge
 
Delphi 2010 Professional
 
#7

AW: Sendmessage Explorer öffnen

  Alt 24. Okt 2012, 09:31
Hallo Thomas,

vielen Dank für dein Beispiel. Ich werde mich da mal reindenken und herumspielen.
Peter Majewski
  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 17:42 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