Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / CreateProcessA & WaitForSingleObject не работает / 14 сообщений из 14, страница 1 из 1
29.08.2005, 15:59:17
    #33239278
Smile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CreateProcessA & WaitForSingleObject не работает
не отрабатывает код
на 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
29.08.2005, 16:00:11
    #33239280
Smile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CreateProcessA & WaitForSingleObject не работает
сорри, не "cmdline$", а cmdline$
...
Рейтинг: 0 / 0
29.08.2005, 16:21:20
    #33239309
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CreateProcessA & WaitForSingleObject не работает
А если попробовать вот так?
Код: plaintext
CreateProcessA(vbNullString, cmdline$,  0 &,  0 &,  1 &, NORMAL_PRIORITY_CLASS,  0 &, vbNullString, start, proc)
Кстати, если не секрет, зачем там нужен цикл? И почему время ожидания 10 секунд?
ЗЫ. Права-то на исполнение есть?
...
Рейтинг: 0 / 0
29.08.2005, 16:38:28
    #33239355
Smile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CreateProcessA & WaitForSingleObject не работает
вот правильный код процедуры
Код: 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
29.08.2005, 16:42:10
    #33239364
Smiel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CreateProcessA & WaitForSingleObject не работает
vbNullString - возвращает значение типа string
...
Рейтинг: 0 / 0
29.08.2005, 16:43:04
    #33239369
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CreateProcessA & WaitForSingleObject не работает
У меня практически точно также это работает (описывал здесь ).
Видимо, это проблема конкретного компьютера. На других машинках-то работает?
...
Рейтинг: 0 / 0
29.08.2005, 16:43:57
    #33239371
Smile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CreateProcessA & WaitForSingleObject не работает
ну из командной строки отрабатывает, значит права-то есть, юзер с правами администратора
...
Рейтинг: 0 / 0
29.08.2005, 16:46:34
    #33239383
Smile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CreateProcessA & WaitForSingleObject не работает
на других-то работает, на пару штуках
...
Рейтинг: 0 / 0
29.08.2005, 16:55:07
    #33239407
Smile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CreateProcessA & WaitForSingleObject не работает
в общем бестолку, на одно работает, на другом нет
взял код по линку, все симптомы такие же
...
Рейтинг: 0 / 0
29.08.2005, 16:59:54
    #33239422
Smile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CreateProcessA & WaitForSingleObject не работает
кстати, notepad запускается спокойно, и прога ждет его завершения...
...
Рейтинг: 0 / 0
29.08.2005, 17:09:06
    #33239454
AndreyMp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CreateProcessA & WaitForSingleObject не работает
Попробуй добавить при Initialize the STARTUPINFO structure.
start.wShowWindow = 1 - состояние окна.
0-скрытое,
1-нормальное,
3-max,
6-min.
...
Рейтинг: 0 / 0
29.08.2005, 17:15:58
    #33239479
Smile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CreateProcessA & WaitForSingleObject не работает
разобрался....
в общем ситуация такая, при указании полного пути к файлу он, например, из фара не запускается, если находится в папке отлично от той, где лежит сам файл... странная штука, однако... т.е. с фара запскаешь, а он даже ничего не выводит и не ругается.... в общем в батник засуну первой строчкой cd и его буду запускать...
только вот почему так???
...
Рейтинг: 0 / 0
29.08.2005, 17:20:30
    #33239493
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CreateProcessA & WaitForSingleObject не работает
Smileразобрался....
в общем ситуация такая, при указании полного пути к файлу он, например, из фара не запускается, если находится в папке отлично от той, где лежит сам файл... странная штука, однако... т.е. с фара запскаешь, а он даже ничего не выводит и не ругается.... в общем в батник засуну первой строчкой cd и его буду запускать...
только вот почему так???
А ты не обратил внимания, что у меня сначала запускается FindExecutable, и только потом ей подсовывается путь к файлу?
...
Рейтинг: 0 / 0
29.08.2005, 17:55:06
    #33239615
Smile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CreateProcessA & WaitForSingleObject не работает
бестолку =(
она добавляет в cmdline$ пробел и кавычки и потом функция вообще не отрабатывает, возвращает ноль после запуска процесса
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / CreateProcessA & WaitForSingleObject не работает / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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