powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Что возвращает ShellExecute ?
11 сообщений из 11, страница 1 из 1
Что возвращает ShellExecute ?
    #33346431
Евгений1234-5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MS Access XP VBA
Может не по адресу конечно, но где еще узнать не знаю.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Dim id_run_App As Long
Dim hProcess As Long
Dim lngExitCode As Long
Dim lngRetval As Long 
 id_run_App = acb_apiShellExecute(Application.hWndAccessApp, "open", _
     "WinRAR.exe.", "c:\Âåñåëîâ\GorodXP.rar", "C:\Program Files\WinRAR\", _
     acbSW_SHOWNORMAL)
    hProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or SYNCHRONIZE, _
      True, id_run_App)
   Do
      ' Attempt to retrieve the exit code, which will
      ' not exist until the application has quit.
      lngRetval = GetExitCodeProcess(hProcess, lngExitCode)
      DoEvents
   Loop Until lngExitCode <> STILL_ACTIVE
MsgBox "ddd"
If id_run_App <  33  Then MsgBox err_msg_shell(id_run_App), vbCritical, "Àðõèâàòîð WinRAR"
Шелл вроде бы должна возвращать код процесса.
Дак вот переменная id_run_App всегда равна 42 сколко раз бы я не запускал.
Опен процесс по коду 42 возвращает 0.
Вобщем не понимаю почему так ?
Хочу дождатся окончания процесса.
...
Рейтинг: 0 / 0
Что возвращает ShellExecute ?
    #33346579
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
If the function succeeds, the return value is the instance handle of the application that was run, or the handle of a dynamic data exchange (DDE) server application.

If the function fails, the return value is an error value that is less than or equal to 32. The following table lists these error values:
0
The operating system is out of memory or resources.

ERROR_FILE_NOT_FOUND
The specified file was not found.

ERROR_PATH_NOT_FOUND
The specified path was not found.

ERROR_BAD_FORMAT
The .EXE file is invalid (non-Win32 .EXE or error in .EXE image).

SE_ERR_ACCESSDENIED
The operating system denied access to the specified file.

SE_ERR_ASSOCINCOMPLETE
The filename association is incomplete or invalid.

SE_ERR_DDEBUSY
The DDE transaction could not be completed because other DDE transactions were being processed.

SE_ERR_DDEFAIL
The DDE transaction failed.

SE_ERR_DDETIMEOUT
The DDE transaction could not be completed because the request timed out.

SE_ERR_DLLNOTFOUND
The specified dynamic-link library was not found.

SE_ERR_FNF
The specified file was not found.

SE_ERR_NOASSOC
There is no application associated with the given filename extension.

SE_ERR_OOM
There was not enough memory to complete the operation.

SE_ERR_PNF
The specified path was not found.

SE_ERR_SHARE
A sharing violation occurred.
...
Рейтинг: 0 / 0
Что возвращает ShellExecute ?
    #33346660
Евгений1234-5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Melkiades вы намекаете, что я чего-то не допонял, но я не допонял и сейчас.


авторIf the function succeeds, the return value is the instance handle of the application that was run
Здесь, как я понимаю, ф-я возвращает при удачном испонении код процесса.

авторor the handle of a dynamic data exchange (DDE) server application.
А вот здесь я вообще ничего ни понимаю. Обмен данными ч/з ДДЕ, его хандел(код процесса) ?
...
Рейтинг: 0 / 0
Что возвращает ShellExecute ?
    #33346950
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MSDN:
Returns a value greater than 32 if successful, or an error value that is less than or equal to 32 otherwise. The following table lists the error values. The return value is cast as an HINSTANCE for backward compatibility with 16-bit Microsoft® Windows® applications. It is not a true HINSTANCE, however. The only thing that can be done with the returned HINSTANCE is to cast it to an integer and compare it with the value 32 or one of the error codes below.
...
Рейтинг: 0 / 0
Что возвращает ShellExecute ?
    #33347078
Евгений1234-5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так я скоро выучу аглицкий


Все равно ничо не пойму.
Запускается без ошибки (42), но это не код процесса!
Придется читать MSDN.
...
Рейтинг: 0 / 0
Что возвращает ShellExecute ?
    #33347420
Что здесь непонятного. Функция возвращает целое число. Если оно больше 32, значит, функция завершилась успешно. В противном случае возвращается один из кодов ошибки.

Код: plaintext
1.
2.
3.
4.
5.
6.
0 - Системная ошибка.
2 - Файл не найден.
3 - Каталог не найден.
5 - Нарушение прав доступа.
8 - Недостаточно памаяти для запуска задачи.
...
32 - Библиотека DLL не найдена.

А вот если запустишь через Shell, то все получится как хочешь.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
   Dim hInstance As Long
   Dim hProcess As Long
   Dim lngRetval As Long
   Dim lngExitCode As Long

   hInstance = Shell(strCommand, intMode)

   hProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or SYNCHRONIZE, _
      True, hInstance)

   Do
      lngRetval = GetExitCodeProcess(hProcess, lngExitCode)
      DoEvents
   Loop Until lngExitCode <> STILL_ACTIVE
...
Рейтинг: 0 / 0
Что возвращает ShellExecute ?
    #33347537
Евгений1234-5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА вот если запустишь через Shell, то все получится как хочешь.А вот шелл мне и не надо, хотя и то, что все все получится знаю, проверял. И про коды ашипок знаю.
Мне надо понять, что возвращает ШеллЭкзекъюте.

Все равно спасибо.
...
Рейтинг: 0 / 0
Что возвращает ShellExecute ?
    #33347558
Евгений1234-5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЧто здесь непонятного.
То и не понятно, что возвращает все время 42, а что ето такое - хз.
И это не код процесса (судя по опен процесс).

Гм. Пока тренировался Аксес не закрывал, надо попробовать закрыть открыть Акс, может код изменится. Тогда с Аксом как-то завязано. Ведь ШеллЭкз использует HWnd Акса.
...
Рейтинг: 0 / 0
Что возвращает ShellExecute ?
    #33347569
Евгений1234-5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И ещё, кто знает как это правильно перевести ?
If the function succeeds, the return value is the instance handle of the application that was run, or the handle of a dynamic data exchange (DDE) server application.
...
Рейтинг: 0 / 0
Что возвращает ShellExecute ?
    #33347677
Дурак
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я, я знаю!!!

"Дескриптор DDE сервера"
...
Рейтинг: 0 / 0
Что возвращает ShellExecute ?
    #33348948
Евгений1234-5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShellExecute возвращает то же, что и FindExecutable (42 для WinRaR), что то связанное с ассоциацией.
Вобщем получить код процесса удалось лишь CreateProcess-ом.
Проблема решена всем спасибо.

авторЯ, я знаю!!!
Да я вобщем то же догадываюсь, но суть не понимаю.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Что возвращает ShellExecute ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]