Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Надо запустить процесс notepad средствами WinAPI

36K
10 апреля 2009 года
lesovick
22 / / 09.04.2009
Работаю в C#. Надо запустить процесс notepad средствами WinAPI. Надо, чтобы просто передо мной открылось окно notepad. Но функция CreateProcess возвращает false, и notepad не запускается. Что я делаю не так?

public class ProcessInfo
{
public IntPtr hProcess;
public IntPtr hThread;
public Int32 ProcessId;
public Int32 ThreadId;
}
public class SECURITY_ATTRIBUTES
{
public Int32 nLength;
public Int32 lpSecurityDescriptor;
public bool bInheritHandle;
}
[DllImport("kernel32.dll", SetLastError = true)]
private static extern bool CreateProcess
(
string imageName,
string cmdLine,
SECURITY_ATTRIBUTES lpProcessAttributes,
SECURITY_ATTRIBUTES lpThreadAttributes,
bool boolInheritHandles,
Int32 dwCreationFlags,
Int32 lpEnvironment,
string lpszCurrentDir,
byte[] si,
ProcessInfo pi
);
private void button5_Click(object sender, EventArgs e)
{
ProcessInfo ProcInf = null;
byte[] startUpInfo = new byte[18];
startUpInfo[0] = 18 * sizeof(byte);
///////////////////
startUpInfo[1] = 0;
startUpInfo[2] = 0;
startUpInfo[3] = 0;
///////////////////
startUpInfo[4] = 0;
startUpInfo[5] = 0;
startUpInfo[6] = 0;
startUpInfo[7] = 0;
startUpInfo[8] = 0;
startUpInfo[9] = 0;
startUpInfo[10] = 0;
startUpInfo[11] = 1;
startUpInfo[12] = 0;
startUpInfo[13] = 0;
///////////////////////////////
startUpInfo[14] = 0;
///////////////////////////////
startUpInfo[15] = 0;
startUpInfo[16] = 0;
startUpInfo[17] = 0;
SECURITY_ATTRIBUTES ProcessAttr = null;
SECURITY_ATTRIBUTES ThreadAttr = null;
bool b = CreateProcess("D:\\notepad.exe", null, ProcessAttr, ThreadAttr, false, 32, 0, "D:\\", startUpInfo, ProcInf);
}
2.2K
11 апреля 2009 года
REFOT
181 / / 08.04.2005
Может, пойдёт ShellExecute?

 
Код:
ShellExecute(0,                          
             "open",
             "notepad.exe",
             "c:\\test.txt",
             0,
             SW_SHOW);
36K
12 апреля 2009 года
lesovick
22 / / 09.04.2009
Спасибо. Пробовал ShellExecute - работает.
1
12 апреля 2009 года
kot_
7.3K / / 20.01.2000
Цитата: lesovick
Спасибо. Пробовал ShellExecute - работает.


скажите, а у вас действительно блокнот лежит в корне диска D?
З.Ы. Для спасибо есть репутация. Для форматирования кода тег [ code ]. Помимо этого есть правила топика - которые читать обязательно.

36K
17 апреля 2009 года
lesovick
22 / / 09.04.2009
Мне казалось, что я добавил вам репутацию, разве нет? Ну ладно, могу ещё раз, мне не жалко :) .

А нотпад я временно на диск D ручками скопировал. Ну, просто мне так по некоторым причинам удобнее было его ислользовать для отладки этой проги.
1
17 апреля 2009 года
kot_
7.3K / / 20.01.2000
Цитата: lesovick

А нотпад я временно на диск D ручками скопировал. Ну, просто мне так по некоторым причинам удобнее было его ислользовать для отладки этой проги.


Я собственно к тому, что ShellExecute работает немного по другому. В отличии от CreateProcess который не выполняет поиск в PATH ShellExecute это делает. Этот момент стоит учитывать - особенно если имеет значение какой исполнимый файл будет запущен. А что бы выяснить почему не запускается процесс через CreateProcess надо использовать GetLastError

3
18 апреля 2009 года
Green
4.8K / / 20.01.2000
Цитата: lesovick

byte[] startUpInfo = new byte[18];
startUpInfo[0] = 18 * sizeof(byte);
///////////////////
startUpInfo[1] = 0;
startUpInfo[2] = 0;
startUpInfo[3] = 0;
///////////////////
startUpInfo[4] = 0;
startUpInfo[5] = 0;
startUpInfo[6] = 0;
startUpInfo[7] = 0;
startUpInfo[8] = 0;
startUpInfo[9] = 0;
startUpInfo[10] = 0;
startUpInfo[11] = 1;
startUpInfo[12] = 0;
startUpInfo[13] = 0;
///////////////////////////////
startUpInfo[14] = 0;
///////////////////////////////
startUpInfo[15] = 0;
startUpInfo[16] = 0;
startUpInfo[17] = 0;


М-да... Индусы отдыхают...
Было бы смешно, если бы не было так печально....

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог