AGB  ·  Datenschutz  ·  Impressum  







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

Ausführen... Fenster öffnen

Ein Thema von schwa226 · begonnen am 8. Sep 2009 · letzter Beitrag vom 8. Sep 2009
Antwort Antwort
schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#1

Ausführen... Fenster öffnen

  Alt 8. Sep 2009, 11:27
Hi,

per:

Delphi-Quellcode:
var
Shell : OleVariant;
begin
Shell := CreateOleObject('Shell.Application');
Shell.FileRun;
Shell := Unassigned;
end;
kann man den Dialog "Ausführen..." öffnen.

Da ich aber an einem Shell Ersatz schreibe und die explorer.exe nicht geladen ist geht das nicht!?
Shell.ControlPanelItem('timedate.cpl'); (zeigt Eigenschaften der Uhr an)

Geht aber trotzdem!?

Das Interface geht also anscheinend aber wieso wird dann der RUN-Dialog nicht geöffnet?

Kennt jemand eine andere Art diesen Dialog zu öffnen?

Auch geht:
Shell.MinimizeAll; nur wenn die explorer.exe geladen ist. Hier ist das gleiche Verhalten wie mit FileRun.
Delphi 2010, Update 4 & 5
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#2

Re: Ausführen... Fenster öffnen

  Alt 8. Sep 2009, 11:39
Ich hatte vor einigen Jahren mal einen Task Manager Clone geschrieben.
Kannst ja mal gucken ob's bei dir läuft.

Delphi-Quellcode:
function RunFileDlgWinNT(hWnd: HWND; hIcon: HICON; lpstrDirectory, lpstrTitle,
  lpstrDescription: LPWSTR; uFlags: UINT): DWORD; stdcall; external 'SHELL32.DLLindex 61;

function RunFileDlgWin95(hWnd: HWND; hIcon: HICON; lpstrDirectory, lpstrTitle,
  lpstrDescription: LPCSTR ; uFlags: UINT): DWORD; stdcall; external 'SHELL32.DLLindex 61;
Delphi-Quellcode:
const
  DLG_TITLE = 'Neuen Task erstellen';
begin
  if Win32Platform = VER_PLATFORM_WIN32_NT then
    RunFileDlgWinNT(Self.Handle, Application.Icon.Handle, nil, DLG_TITLE, nil, 0)
  else
    RunFileDlgWin95(Self.Handle, Application.Icon.Handle, nil, DLG_TITLE, nil, 0);
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#3

Re: Ausführen... Fenster öffnen

  Alt 8. Sep 2009, 13:01
Super Danke für deine Hilfe!

Dadurch habe ich auch noch das gefunden:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ This code uses the undocumented RunFileDlg function to show the "run" dialog }
{ Dieser Code verwendet die undokumentierte RunFileDlg Funktion, um den Ausführen Dialog anzuzeigen }
// For Win NT
procedure RunFileDlgW(OwnerWnd: HWND; Icon: HICON; lpstrDirectory: PWideChar;
  lpstrTitle: PWideChar; lpstrDescription: PWideChar; Flags: Longint); stdcall;
  external 'Shell32.dllIndex 61;
// For Win 9x (Win NT to show standard captions )
procedure RunFileDlg(OwnerWnd: HWND; Icon: HICON; lpstrDirectory: PChar;
  lpstrTitle: PChar; lpstrDescription: PChar; Flags: Longint); stdcall;
  external 'Shell32.dllIndex 61;

const
  RFF_NOBROWSE = 1; //Removes the browse button.
  RFF_NODEFAULT = 2; // No default item selected.
  RFF_CALCDIRECTORY = 4; // Calculates the working directory from the file name.
  RFF_NOLABEL = 8; // Removes the edit box label.
  RFF_NOSEPARATEMEM = 14; // Removes the Separate Memory Space check box (Windows NT only)

function ShowRunFileDialg(OwnerWnd: HWND; InitialDir, Title, Description: PChar;
  flags: Integer; StandardCaptions: Boolean): Boolean;
var
  HideBrowseButton: Boolean;
  TitleWideChar, InitialDirWideChar, DescriptionWideChar: PWideChar;
  Size: Integer;
begin
  if (Win32Platform = VER_PLATFORM_WIN32_NT) and not StandardCaptions then
  begin
    Size := SizeOf(WideChar) * MAX_PATH;
    InitialDirWideChar := nil;
    TitleWideChar := nil;
    DescriptionWideChar := nil;
    GetMem(InitialDirWideChar, Size);
    GetMem(TitleWideChar, Size);
    GetMem(DescriptionWideChar, Size);
    StringToWideChar(InitialDir, InitialDirWideChar, MAX_PATH);
    StringToWideChar(Title, TitleWideChar, MAX_PATH);
    StringToWideChar(Description, DescriptionWideChar, MAX_PATH);
    try
      RunFileDlgW(OwnerWnd, 0, InitialDirWideChar, TitleWideChar, DescriptionWideChar, Flags);
    finally
      FreeMem(InitialDirWideChar);
      FreeMem(TitleWideChar);
      FreeMem(DescriptionWideChar);
    end;
  end else
    RunFileDlg(OwnerWnd, 0, PChar(InitialDir), PChar(Title), PChar(Description), Flags);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 ShowRunFileDialg(Self.Handle, nil, nil, nil, 0, True);
end;

end.
Geht einwandfrei, auch bei nicht gestarteten explorer.exe!

Jetzt brauch ich noch den Index für MinimizeAll...
Delphi 2010, Update 4 & 5
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#4

Re: Ausführen... Fenster öffnen

  Alt 8. Sep 2009, 14:04
Zitat von schwa226:
Jetzt brauch ich noch den Index für MinimizeAll...
Kannst du doch selber machen. In dem du mit EnumWindows die vorhanden Fenster ermittelst. Guckst ob es sich um TopLevel Fenster handelt
und diese sichtbar sind. Dann schickst du WM_SYSCOMMAND und SC_MINIMIZE an die Fenster und gut ist.
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  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 13:45 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