powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / CreateProcessA & WaitForSingleObject не работает
14 сообщений из 14, страница 1 из 1
CreateProcessA & WaitForSingleObject не работает
    #33239278
Smile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не отрабатывает код
на VB6.0,SP5, Win2K Prof SP4
тоже самое, но на Win2K Server SP4 отрабатывает
на первой машине не работает и Shell!
запускается виндузовая прога с параметром - путь к файлу
видно, что окошко появляется и сразу исчезает, процесс создается, судя по возвращаемому значениею CreateProcessA, но то что прога должна делать, она не делает...
из командной строки таже строка отрабатывает и запускает прогу как надо
пробовал засунуть строку в батник и запускать из кода уже батник, но бесполезно...
втрой строкой в батнике ставил pause, так вот он просто пролетает строчку, где запускается файл с параметром, просто выводит ее в окно и тормозится на pause
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
Option Explicit
      Private Type STARTUPINFO
         cb As Long
         lpReserved As String
         lpDesktop As String
         lpTitle As String
         dwX As Long
         dwY As Long
         dwXSize As Long
         dwYSize As Long
         dwXCountChars As Long
         dwYCountChars As Long
         dwFillAttribute As Long
         dwFlags As Long
         wShowWindow As Integer
         cbReserved2 As Integer
         lpReserved2 As Long
         hStdInput As Long
         hStdOutput As Long
         hStdError As Long
      End Type

      Private Type PROCESS_INFORMATION
         hProcess As Long
         hThread As Long
         dwProcessID As Long
         dwThreadID As Long
      End Type

      Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal _
         hHandle As Long, ByVal dwMilliseconds As Long) As Long

      Private Declare Function CreateProcessA Lib "kernel32" (ByVal _
         lpApplicationName As Long, ByVal lpCommandLine As String, ByVal _
         lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, _
         ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, _
         ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, _
         lpStartupInfo As STARTUPINFO, lpProcessInformation As _
         PROCESS_INFORMATION) As Long

      Private Declare Function CloseHandle Lib "kernel32" (ByVal _
         hObject As Long) As Long

      Private Const NORMAL_PRIORITY_CLASS = &H20&
      Private Const INFINITE = - 1 &
                    
 
Public Sub ExecCmd(cmdline$)
         Dim proc As PROCESS_INFORMATION
         Dim start As STARTUPINFO
         Dim ReturnValue As Integer

         ' Initialize the STARTUPINFO structure:
         start.cb = Len(start)

         ' Start the shelled application:
         ReturnValue = CreateProcessA( 0 &, "cmdline$",  0 &,  0 &,  1 &, _
            NORMAL_PRIORITY_CLASS,  0 &,  0 &, start, proc)

         ' Wait for the shelled application to finish:
         Do
            ReturnValue = WaitForSingleObject(proc.hProcess,  10000 )
            DoEvents
        Loop Until ReturnValue <>  258 
        'Loop Until ReturnValue = 0
         ReturnValue = CloseHandle(proc.hProcess)
      End Sub
...
Рейтинг: 0 / 0
CreateProcessA & WaitForSingleObject не работает
    #33239280
Smile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сорри, не "cmdline$", а cmdline$
...
Рейтинг: 0 / 0
CreateProcessA & WaitForSingleObject не работает
    #33239309
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если попробовать вот так?
Код: plaintext
CreateProcessA(vbNullString, cmdline$,  0 &,  0 &,  1 &, NORMAL_PRIORITY_CLASS,  0 &, vbNullString, start, proc)
Кстати, если не секрет, зачем там нужен цикл? И почему время ожидания 10 секунд?
ЗЫ. Права-то на исполнение есть?
...
Рейтинг: 0 / 0
CreateProcessA & WaitForSingleObject не работает
    #33239355
Smile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот правильный код процедуры
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Public Sub ExecCmd(CmdLine$)
   Dim proc As PROCESS_INFORMATION
   Dim start As STARTUPINFO
   Dim ret As Long
   ' Initialize the STARTUPINFO structure:
   start.cb = Len(start)
   ' Start the shelled application:
   ret& = CreateProcessA( 0 &, CmdLine$,  0 &,  0 &,  1 &, _
        NORMAL_PRIORITY_CLASS,  0 &,  0 &, start, proc)
   ' Wait for the shelled application to finish:
   ret& = WaitForSingleObject(proc.hProcess, INFINITE)
   ret& = CloseHandle(proc.hProcess)
End Sub
просто уже крыша съезжает, разные варианты пробовал, вот и запостил не тот код
это тоже не работает =(
...
Рейтинг: 0 / 0
CreateProcessA & WaitForSingleObject не работает
    #33239364
Smiel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vbNullString - возвращает значение типа string
...
Рейтинг: 0 / 0
CreateProcessA & WaitForSingleObject не работает
    #33239369
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня практически точно также это работает (описывал здесь ).
Видимо, это проблема конкретного компьютера. На других машинках-то работает?
...
Рейтинг: 0 / 0
CreateProcessA & WaitForSingleObject не работает
    #33239371
Smile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну из командной строки отрабатывает, значит права-то есть, юзер с правами администратора
...
Рейтинг: 0 / 0
CreateProcessA & WaitForSingleObject не работает
    #33239383
Smile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на других-то работает, на пару штуках
...
Рейтинг: 0 / 0
CreateProcessA & WaitForSingleObject не работает
    #33239407
Smile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в общем бестолку, на одно работает, на другом нет
взял код по линку, все симптомы такие же
...
Рейтинг: 0 / 0
CreateProcessA & WaitForSingleObject не работает
    #33239422
Smile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, notepad запускается спокойно, и прога ждет его завершения...
...
Рейтинг: 0 / 0
CreateProcessA & WaitForSingleObject не работает
    #33239454
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй добавить при Initialize the STARTUPINFO structure.
start.wShowWindow = 1 - состояние окна.
0-скрытое,
1-нормальное,
3-max,
6-min.
...
Рейтинг: 0 / 0
CreateProcessA & WaitForSingleObject не работает
    #33239479
Smile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
разобрался....
в общем ситуация такая, при указании полного пути к файлу он, например, из фара не запускается, если находится в папке отлично от той, где лежит сам файл... странная штука, однако... т.е. с фара запскаешь, а он даже ничего не выводит и не ругается.... в общем в батник засуну первой строчкой cd и его буду запускать...
только вот почему так???
...
Рейтинг: 0 / 0
CreateProcessA & WaitForSingleObject не работает
    #33239493
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Smileразобрался....
в общем ситуация такая, при указании полного пути к файлу он, например, из фара не запускается, если находится в папке отлично от той, где лежит сам файл... странная штука, однако... т.е. с фара запскаешь, а он даже ничего не выводит и не ругается.... в общем в батник засуну первой строчкой cd и его буду запускать...
только вот почему так???
А ты не обратил внимания, что у меня сначала запускается FindExecutable, и только потом ей подсовывается путь к файлу?
...
Рейтинг: 0 / 0
CreateProcessA & WaitForSingleObject не работает
    #33239615
Smile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бестолку =(
она добавляет в cmdline$ пробел и кавычки и потом функция вообще не отрабатывает, возвращает ноль после запуска процесса
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / CreateProcessA & WaitForSingleObject не работает
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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