Страница 1 из 1

CreateProcess

СообщениеДобавлено: 13.11.2004 (Сб) 22:22
A.A.Z.
Народ, помогите программу запустить! Пишу
Код: Выделить всё
Option Explicit

Public Declare Function CreateProcess Lib "coredll.DLL" Alias "CreateProcessW" (ByVal lpApplicationName As String, 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 String, ByVal lpStartupInfo As Long, ByVal lpProcessInformation As Long) As Long

Private Sub cmdRun_Click()
Dim ret
ret = CreateProcess("windows\repllog.exe", "/remote", 0, 0, False, 0, 0, vbNullString, 0, 0)
MsgBox ret
End Sub
Все время пишет "0", я запарился уже! Помогите! :(

СообщениеДобавлено: 14.11.2004 (Вс) 6:25
GSerg
А кто тебе сказал, что два последних могут быть null? :)

СообщениеДобавлено: 14.11.2004 (Вс) 17:30
A.A.Z.
Дык это ж eMbedded VB! Там UDT не поддерживается :)

СообщениеДобавлено: 14.11.2004 (Вс) 18:05
GSerg
Ну и чё мне тебе сказать? :)
Где славная функция узрит параметры запуска процесса? Куда она вернёт handles, которые ты потом должен close? :)
Ну чё, создавай байтовый массив и ручками в нужные позиции заноси значения. А потом... Ну, ты меня понял :)

СообщениеДобавлено: 14.11.2004 (Вс) 22:51
mad_Max
Наковырял на одном сайте такой пример:
Код: Выделить всё
Public Declare Function CreateProcess Lib "coredll" Alias "CreateProcessW" (ByVal lpApplicationName As String, ByVal lpCommandLine As String, ByVal lpProcessAttributes As Long, ByVal lpThreadAttribute As Long, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, ByVal lpStatupInfo As Long, ByVal lpProcessInformation As Long) As Boolean

Private Sub cmdRun_Click()
Dim Retval as Boolean
Retval = CreateProcess("\windows\repllog.exe", "/remote", 0, 0, 0, 0, 0, 0, 0, 0)
End Sub


У самого eVB нет, не проверить. Если не заработает, попробуй еще в своем коде прописать путь к repllog.exe со слэшем вначале.

СообщениеДобавлено: 25.11.2004 (Чт) 21:15
A.A.Z.
Пробовал - не пашет :(

СообщениеДобавлено: 18.02.2005 (Пт) 19:06
A.A.Z.
Вопрос все еще открыт :)
GSerg, помоги с байтовыми массивами? А то уже мозги вскипели :(

СообщениеДобавлено: 18.02.2005 (Пт) 19:29
GSerg
Гы, смотри-ка, структура в апивьюере неправильно определена :) Работает только благодаря случайному совпадению 4-байтового выравнивания с искомой формой :)

Ну ладно :)
В общем, берём массив типа long (можно там массивы-то?) в количестве 17 элементов. Это будет типа структура STARTUPINFO, Заполнить разберёшся как :) Потом берём массив того же типа, но из 4 лонгов.
Указатели на начальные элементы этих массивов передаём вместо указателей на структуры... Должно работать :)
Потом не забудть закрыть хэндлы... Которые будут возвращены во втором массиве :)

СообщениеДобавлено: 18.02.2005 (Пт) 19:36
tyomitch
Типизированные массивы афаик нельзя - можно только строки (могу заблуждаться)

СообщениеДобавлено: 18.02.2005 (Пт) 19:51
A.A.Z.
Крик души, можно, да? А-а-а-а-а-а-а!!!! Как же я ненавижу eVB!!! Там даже GOTO нету!!! Не говоря уже о Split()!!! :evil:

СообщениеДобавлено: 18.02.2005 (Пт) 19:52
A.A.Z.
Я быстрее весь VB.NET изучу, чем напишу на eVB "Hello, World"!!! :evil:

СообщениеДобавлено: 18.02.2005 (Пт) 20:42
tyomitch
Увы, так оно и есть :-( :-(