ShellExecute

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Demonx
Бывалый
Бывалый
 
Сообщения: 237
Зарегистрирован: 25.06.2003 (Ср) 0:08
Откуда: Литва/Висагинас

ShellExecute

Сообщение Demonx » 30.01.2005 (Вс) 13:09

Запускаю exe файл через ShellExecute. Эта функция возвращает instance handle. Как по instance handl'у узнать handle окна?
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 30.01.2005 (Вс) 13:37

Ну блин, ещё один... :-(

Никак. Она возвращает не instance handle, а число 42. Instance handle она возвращала 10 лет назад.

Можешь попробовать юзать ShellExecuteEx, она возвращает hProcess.
Изображение

Demonx
Бывалый
Бывалый
 
Сообщения: 237
Зарегистрирован: 25.06.2003 (Ср) 0:08
Откуда: Литва/Висагинас

Сообщение Demonx » 30.01.2005 (Вс) 14:51

Спасибо, буду пробовать.
Изображение

Demonx
Бывалый
Бывалый
 
Сообщения: 237
Зарегистрирован: 25.06.2003 (Ср) 0:08
Откуда: Литва/Висагинас

Сообщение Demonx » 30.01.2005 (Вс) 15:03

Про ShellExecuteEx написано:
If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero. Значит она не возвращает hProccess.
Изображение

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 30.01.2005 (Вс) 16:03

А CreateProcess чем не подходит? Ты же всё равно EXE-шник запускаешь :) После вызова этой функции заполняется структура PROCESS_INFORMATION. Там есть информация и о PID, и о hProcess :)
Моду создают модоки, а распространяют модозвоны.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 30.01.2005 (Вс) 16:47

Demonx писал(а):Про ShellExecuteEx написано:
If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero. Значит она не возвращает hProccess.

Она возвращает его в поле hProcess структуры SHELLEXECUTEINFO.
Изображение

Demonx
Бывалый
Бывалый
 
Сообщения: 237
Зарегистрирован: 25.06.2003 (Ср) 0:08
Откуда: Литва/Висагинас

Сообщение Demonx » 30.01.2005 (Вс) 17:14

Понятно...
Вот ещё проблема с CreateProcess. Эта программа запускает помимо себя ещё одну под программу и надо дождаться её завершения, но CreateProcess не ждёт. Я примерно знаю, что надо использовать WaitForMultipleObjects, но как не знаю.
Изображение

Demonx
Бывалый
Бывалый
 
Сообщения: 237
Зарегистрирован: 25.06.2003 (Ср) 0:08
Откуда: Литва/Висагинас

Сообщение Demonx » 30.01.2005 (Вс) 17:20

Т.е. как получить все хэндлы потоков программы?
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 30.01.2005 (Вс) 17:20

Иди в Наши проекты. Качни Waiter! и поюзай его на hProcess.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Demonx
Бывалый
Бывалый
 
Сообщения: 237
Зарегистрирован: 25.06.2003 (Ср) 0:08
Откуда: Литва/Висагинас

Сообщение Demonx » 30.01.2005 (Вс) 17:52

tyomitch писал(а):
Demonx писал(а):Про ShellExecuteEx написано:
If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero. Значит она не возвращает hProccess.

Она возвращает его в поле hProcess структуры SHELLEXECUTEINFO.


hProcess почему-то всегда возвращает 0.
Изображение


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17

    TopList