Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как открыть окно


melifaro ©   (2002-12-20 08:40:00) 

Доброго времени суток.
Напаролся на проблемму. Уже не знаю где искать.
Ситуация такая - мне нужно открыть стандартное окно "Выполнить", причём тогда, когда эксплорер не работает (т.е. исклучается эмуляция сообщения таскбару для открытия этого окна).

Передебажил все dll"ины в виндах, пересмотрел кучу сайтов. Результата НЕТ. Помогите!


melifaro   (2002-12-24 15:47:00) [1]

2Vasily Terekhov Огромное спасибо :)


DVM   (2002-12-23 21:07:00) [2]

Можно свое сделать такое же за полчаса. Мне когда понадобилось, я сделал. Там только сложность с хранением в реестре ранее запускавшихся программ (MRU).

А по поводу использования окна "Run" Explorera:
запуск будет работать криво - нельзя так открыть будет папку, например, т.к. для этого нужен эксплорер.


Игорь Шевченко   (2002-12-23 18:15:00) [3]

Vasily Terekhov (23.12.02 17:50)

Систему бы еще указать, от версии к версии номер может меняться


Vasily Terekhov   (2002-12-23 17:54:00) [4]

Дополнение...
Type
SHRunDialogProc = function (wnd : HWND; Unknown1:integer; Unknown2 : Pointer; szTitle : PChar; szPrompt : PChar; uiFlages : integer) : DWORD; stdcall;

var
SHRunDialog : SHRunDialogProc;


Vasily Terekhov   (2002-12-23 17:50:00) [5]

procedure TForm1.Button1Click(Sender: TObject);
var
ShellHandle: THandle;
begin
ShellHandle := Windows.LoadLibrary("shell32.dll");
if ShellHandle <> 0 then
SHRunDialog := GetProcAddress(ShellHandle, PChar(61));
if Assigned(SHRunDialog) then
SHRunDialog(Application.Handle,0,nil,nil,nil,0);
end;


melifaro   (2002-12-20 18:27:00) [6]

Спасибо, глянем. Всё-равно версий не так много, а написать и под каждую можно. :)


Игорь Шевченко   (2002-12-20 11:35:00) [7]

melifaro © (20.12.02 11:19)

Shell32.dll или ShlwApi.dll надо смотреть, диалог оттуда вызывается. Но экспортируемая функция номерная и, боюсь, сильно зависит от версии Windows.


melifaro   (2002-12-20 11:19:00) [8]

2 Игорь Шевченко - как раз он-то и НЕ подходит. Нет эксплорера - нечего нажимать.


Игорь Шевченко   (2002-12-20 10:00:00) [9]

Один из способов:

//Show the Run-Dialog:

keybd_event(VK_LWIN, MapVirtualKey(VK_LWIN, 0), 0, 0);
keybd_event(Ord("R"), MapVirtualKey(Ord("R"), 0), 0, 0);
keybd_event(Ord("R"), MapVirtualKey(Ord("R"), 0), KEYEVENTF_KEYUP, 0);
keybd_event(VK_LWIN, MapVirtualKey(VK_LWIN, 0), KEYEVENTF_KEYUP, 0)

Автор - Thomas Shutz


melifaro   (2002-12-20 09:15:00) [10]

Нет. Я лично видел программы, в которых окно "Выполнить" вызывается при закрытом эксплорере.
Наверное stdcall"ом ис самого explorer"а... подозреваю...


Song   (2002-12-20 09:11:00) [11]

Дык эта феня наверно от эксплорера и идёт..


Наверх

Титульная страница Поиск, карта сайта Написать письмо