AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Zwei Windows Explorer starten und nebeneinander bildschirmfüllend positionieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zwei Windows Explorer starten und nebeneinander bildschirmfüllend positionieren

Ein Thema von FarAndBeyond · begonnen am 23. Jun 2015 · letzter Beitrag vom 19. Jul 2016
 
FarAndBeyond
(Gast)

n/a Beiträge
 
#1

Zwei Windows Explorer starten und nebeneinander bildschirmfüllend positionieren

  Alt 23. Jun 2015, 04:41
Hi Leute,

für alle die wie ich Delphi/Lazarus Newbie und ProgrammierNewbie sind...
So kann man mit einem Klick zwei WindowsExplorer starten und nebeneinander anordnen.

Einfach irgendwo hinlegen und den Pfad in die Verknüpfung schreiben.. Ach was? JaJa
Ob das jetzt der ultimativ beste Weg ist wage ich mal zu bezweifeln... grins...

Delphi-Quellcode:
Unit ShowTwoWindowsExplorer;

Interface

 Uses
  Windows, Messages, SysUtils, Classes, Controls, Forms, ShellApi;

 Type
  TForm1 = Class(TForm)
    Procedure FormCreate(Sender: TObject);
    Procedure FormActivate(Sender: TObject);
    Procedure FormShow(Sender: TObject);

   Private
    Procedure WMSysCommand(Var Message: TWMSysCommand); Message WM_SysCommand;
   End;

 Var
  Form1: TForm1;

Implementation
 {$R *.dfm}

// Yes, this is optional or certainly overkill... hahaha...
Procedure TForm1.WMSysCommand(var Message: TWMSysCommand);
 Begin
  Try
   If Message.CmdType And $FFF0 = SC_MINIMIZE
   Then
    Form1.Hide
   Else
    Inherited;
  Except
   Exit;
  End;
 End;


Procedure TForm1.FormCreate(Sender: TObject);
   Var hwnd_Explorer : HWND;
 Begin
  Try
   Form1.Height := 1;
   Form1.Width := 1;
   Form1.Top := 0;
   Form1.Left := 0;
   Form1.AlphaBlend := True;
   Form1.AlphaBlendValue := 0;

   If DirectoryExists('I:\')
   Then
    Begin
     ShellExecute(Form1.Handle, Nil, PChar('I:\MARTIN\(DOWNLOADS)'), Nil, Nil, SW_SHOW);
     hwnd_Explorer := FindWindow(Nil, 'I:\MARTIN\(DOWNLOADS)');
     MoveWindow(hwnd_Explorer, 0, 0, (Screen.Width div 2), Screen.WorkAreaHeight, True);
     SetWindowPos(hwnd_Explorer, HWND_NOTOPMOST,0,0,0,0, SWP_NOSIZE);

     ShellExecute(Form1.Handle, Nil, PChar('I:\MARTIN'), Nil, Nil, SW_SHOW);
     hwnd_Explorer := FindWindow(Nil, 'I:\MARTIN');
     MoveWindow(hwnd_Explorer, (Screen.Width div 2), 0, (Screen.Width div 2), Screen.WorkAreaHeight, True);
     SetWindowPos(hwnd_Explorer, HWND_NOTOPMOST,0,0,0,0, SWP_NOSIZE);
    End
   Else
    Begin
     ShellExecute(Form1.Handle, Nil, PChar('C:\'), Nil, Nil, SW_SHOW);
     hwnd_Explorer := FindWindow(Nil, 'C:\');
     MoveWindow(hwnd_Explorer, 0, 0, (Screen.Width div 2), Screen.WorkAreaHeight, True);
     SetWindowPos(hwnd_Explorer, HWND_NOTOPMOST,0,0,0,0, SWP_NOSIZE);

     ShellExecute(Form1.Handle, Nil, PChar('D:\'), Nil, Nil, SW_SHOW);
     hwnd_Explorer := FindWindow(Nil, 'D:\');
     MoveWindow(hwnd_Explorer, (Screen.Width div 2), 0, (Screen.Width div 2), Screen.WorkAreaHeight, True);
     SetWindowPos(hwnd_Explorer, HWND_NOTOPMOST,0,0,0,0, SWP_NOSIZE);
    End;
  Except
   Exit;
  End;
 End;


Procedure TForm1.FormShow(Sender: TObject);
   Var Owner: HWND;
 Begin
  Try
   Owner := GetWindow(Form1.Handle, GW_OWNER);
   ShowWindow(Owner, SW_HIDE);
  Except
   Exit;
  End;
 End;


Procedure TForm1.FormActivate(Sender: TObject);
 Begin
  Try
   Close;
  Except
   FreeAndNil(Form1);
   Exit;
  End;
 End;

End.
Kann man natürlich auch als KonsolenAnwendung erstellen, aber dann muß man das Konsolenfenster ausblenden.
Ist also wahrscheinlich schon egal oder Geschmacksache oder was auch immer...

Ich bin froh, dass das funktioniert und frage mich warum ich das nicht schon früher benutzt habe.
Obwohl Windows7 das (Downloads)-Verzeichnis immer rechts zeigt... sollte eigentlich laut QuellCode links liegen, aber
vielleicht liegt das auch an der Uhrzeit... Ich seh' den Wald vor lauter Bäumen nicht mehr.... grins...
Hat 'ne Weile gedauert bis ich die Sleep(50)-Befehle herausnehmen konnte... Ich hab' SW_ShowNormal statt SW_Show
benutzt und das ging nur mit Sleep und jetzt weis ich auch warum...

Alle bis jetzt ausprobierten Explorer (DoubleCommander, SpeedCommander, TotalCommander, FreeCommander..) starten
deutlich langsamer als der WindowsExplorer und zeigen auch nicht gleichzeitig Details und Bilder an.
Ok, die werden natürlich weiterentwickelt.. vielleicht kann der eine oder andere das ja mittlerweile doch...

Ich bin müde... zugegeben ich wollte nur mal sehen wie man etwas posted...
Ist das überhaupt das richtige Themegebiet ? Na ja, ist vielleicht auch egal...

Weiterhin viel Spaß und gute Unterhaltung...
Gruß Martin
  Mit Zitat antworten Zitat
 

 

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 00:07 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