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

Вниз

Как открыть проводник диска А из своей программы в модальном окне   Найти похожие ветки 

 
иван61   (2002-09-08 21:35) [0]

Просмотр содержимого диска А делаю так:
ShellExecute(Form9.Handle,PChar("open"), PChar("A:\"), nil,nil,SW_ShowNormal);
Как сделать чтобы окно проводника открывалось в модальном режиме?
Чтобы при клике мимо него оно не перекрывалось другими окнами?
Заранее спасибо.


 
Inan61   (2002-09-09 10:09) [1]

Уделите внимание моей проблеме.
Очень нужно!!!
Заранее спасибо


 
Ученик ©   (2002-09-09 11:27) [2]

procedure TForm1.Button3Click(Sender: TObject);
var
ShellWindow : HWnd;
begin
ShellExecute(Handle, "open", "A:\", nil, nil, SW_ShowNormal);
ShellWindow := GetForegroundWindow;
Enabled := False;
while IsWindow(ShellWindow) do Application.ProcessMessages;
Enabled := True;
end;


 
Игорь Шевченко ©   (2002-09-09 13:09) [3]

Ученик © (09.09.02 11:27)

А попробовать ? :-)))
Вы делаете недоступным окно своего приложения, но все остальные приложения прекрасно перекрывают окно проводника :-)

С уважением,


 
Alx2 ©   (2002-09-09 13:15) [4]

Вообще-то сделать модальным чужое окно ИМХО х/з.

Но что-то кривое наподобие получилось, правда с названием класса "CabinetWClass" - подходить придется довольно индивидуально.


var
Inst: THandle;
wnd: hwnd;
count: integer;
begin
Inst := ShellExecute(Handle, "open", "A:\", nil, nil, SW_ShowNormal);
if Inst > 32 then
begin
count := 1;
repeat
sleep(10); // даем время раскочегариться (до ~10с)
wnd := FindWindow("CabinetWClass", "A:\"); //
Ищем форточку с классом CabinetWClass и заголовком A:\. Вот здесь нужно уточнить или найти способ определения этого класса у explorera.
inc(count);
until (wnd <> 0) or (count > 1000);
if wnd = 0 then ShowMessage(SysErrorMessage(GetLastError))
else
begin
SetWindowPos(wnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE); // Вытаскиваем экплорнутое окошко наверх и приколачиваем его к этому верху.
Enabled := false; // Приглушаем наше окошко
while IsWindow(wnd) do // Ученик (c)
begin
Sleep(10);
Application.ProcessMessages;
end;
Enabled := true; // Возвращаемся к полноценной жизни
end;
end;
end;


 
Ученик ©   (2002-09-09 13:25) [5]

>Игорь Шевченко © (09.09.02 13:09)
"Другие окна" не определены :-)


 
Игорь Шевченко ©   (2002-09-09 13:34) [6]

Ученик © (09.09.02 13:25)

А проверить не мешает - получите массу положительных эмоций :-)


 
Ученик ©   (2002-09-09 13:50) [7]

>Игорь Шевченко © (09.09.02 13:34)
Все работает как задумано


 
Игорь Шевченко ©   (2002-09-09 15:22) [8]

Ученик © (09.09.02 13:50)

В WinNT работает не так, как задумано :-(


 
Steven   (2002-09-10 05:33) [9]

попробуй d6 и ShellListView.



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

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

Наверх




Память: 0.48 MB
Время: 0.019 c
3-60953
ppcat
2002-08-28 14:41
2002.09.19
Функция SOUNDEX и кириллица


7-61334
GydruS
2002-07-09 03:17
2002.09.19
Программирование PIC-контроллера на шине i2c.


1-61153
Вован
2002-09-06 19:08
2002.09.19
Отображение информации на StatusBar е


7-61328
Stanislav SM
2002-07-10 18:28
2002.09.19
Уваж. Мастера, как отследить нажатие 3-й (средней) кнопки мыши?


1-61209
KLOP
2002-09-08 19:07
2002.09.19
Как правильно сделать поиск файла в каталоге включая подкаталоги