Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: CreateProcess Добавлено: 24.12.06 00:36  

Автор вопроса:   | Web-сайт: domkratt.com | ICQ: 278109632 
Питаюсь создать процесс. Не получается(


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

ret = CreateProcess(FileName, ByVal 0, ByVal 0, ByVal 0, False, DEBUG_PROCESS Or NORMAL_PRIORITY_CLASS, ByVal 0, ByVal 0, mSI, mPI)

что не так?

Ответить

  Ответы Всего ответов: 10  

Номер ответа: 1
Автор ответа:
 JMP



Вопросов: 6
Ответов: 171
 Профиль | | #1 Добавлено: 24.12.06 08:21
1.Все строковые параметры этой функции должны передаваться как указатель(ByRef) на строку заканчивающуюся нулем.

2.Перед вызовом этой функции надо обязательно инициализировать члена структуры STARTUPINFO

si.cb=размер структуры

si.cb = LEN(si)
CreateProcess(....

Ответить

Номер ответа: 2
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #2
Добавлено: 24.12.06 20:38
si.cb = LEN(si)

блин) забыл совсем) как я умудрился размер структуры забыть.... блин) бывает же. из головы вылетело. Спасибо)
тема закрыта.

Ответить

Номер ответа: 3
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #3
Добавлено: 24.12.06 20:48
2прог, боже упаси тебя в 6-ке передавать строки по ссылке, они же юникодовые ;)

Ответить

Номер ответа: 4
Автор ответа:
 JMP



Вопросов: 6
Ответов: 171
 Профиль | | #4 Добавлено: 25.12.06 18:38
2прог, боже упаси тебя в 6-ке передавать строки по ссылке, они же юникодовые ;)


 Alias "CreateProcessA" <- ИМХО не юникодовые ;)
для юникода Alias "CreateProcessW"

Ответить

Номер ответа: 5
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #5
Добавлено: 26.12.06 17:38
JMP, но фишка в том что не факт что та строка что ты отошлешь будет в юникоде ;) Короче все оч. запутанно и 100% не дает, поэтому всегда лучше подстраховаться и заиспользовать ByVal str as String в этом случае ВБ создаст копию строки именно в ASCII формате.

Ответить

Номер ответа: 6
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #6
Добавлено: 26.12.06 17:38
JMP, но фишка в том что не факт что та строка что ты отошлешь будет в юникоде ;) Короче все оч. запутанно и 100% не дает, поэтому всегда лучше подстраховаться и заиспользовать ByVal str as String в этом случае ВБ создаст копию строки именно в ASCII формате.

Ответить

Номер ответа: 7
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #7
Добавлено: 26.12.06 18:35
Только если посмотреть в отладчике, все равно каждая строка копируется и обрабатывается функцией MSVBVM60.__vbaStrToAnsi

Но строки надо передавать по значению, а никак не по ссылке, если CreateProcessA юзать.

Ответить

Номер ответа: 8
Автор ответа:
 JMP



Вопросов: 6
Ответов: 171
 Профиль | | #8 Добавлено: 26.12.06 20:49
sne wrote:
JMP, но фишка в том что не факт что та строка что ты отошлешь будет в юникоде ;) Короче все оч. запутанно и 100% не дает, поэтому всегда лучше подстраховаться и заиспользовать ByVal str as String в этом случае ВБ создаст копию строки именно в ASCII формате.


Мужики, спорить не буду ибо последний раз ВБ запускал лет 10 назад, а во всех других языках согласно МСДН строковые параметры АПИ CreateProcessпередаются по указателю, так что сорри если кого из ВБ-шников с толку сбил.

Ответить

Номер ответа: 9
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #9
Добавлено: 27.12.06 10:57
JMP, у VB многое с ног на голову сделано :) Не удивляйся ;)

Ответить

Номер ответа: 10
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #10 Добавлено: 27.12.06 11:31
JMP, в ВБ строковые параметры АПИ CreateProcess оже передаются по указателю. Просто в одном случае это указатель на Unicode, во втором - на копию в формате ANSI. Просто синтаксис немного странный.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам