Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.06;
Скачать: CL | DM;

Вниз

Как открыть окно   Найти похожие ветки 

 
melifaro ©   (2002-12-20 08:40) [0]

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

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


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

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


 
melifaro ©   (2002-12-20 09:15) [2]

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


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

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

//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 11:19) [4]

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


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

melifaro © (20.12.02 11:19)

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


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

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


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

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;


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

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

var
SHRunDialog : SHRunDialogProc;


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

Vasily Terekhov (23.12.02 17:50)

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


 
DVM ©   (2002-12-23 21:07) [10]

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

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



 
melifaro ©   (2002-12-24 15:47) [11]

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



Страницы: 1 вся ветка

Текущий архив: 2003.02.06;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.015 c
1-15758
viper
2003-01-28 12:28
2003.02.06
Добавление в ListBox


3-15491
mate
2003-01-20 14:38
2003.02.06
MSSQL


1-15686
stdnet
2003-01-27 14:15
2003.02.06
Работа с реестром


14-15847
PavelOKES
2003-01-22 07:43
2003.02.06
ISA Server


1-15580
=SOFT=
2003-01-28 15:05
2003.02.06
Как узнать и правильно обработать выбранный фильтр в SaveDialog