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

Ваш аккаунт

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

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

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

Почему при открытии процесса при помощи CreateProcess мой WindowXP не пускает окно

30K
27 марта 2009 года
asmel
50 / / 05.03.2009
Почему при открытии процесса при помощи CreateProcess мой WindowXP не пускает окно этого (!!!) “Калькулятор Плюс” в назначенное ему CreateProcessом место?
Код:
LPCTSTR                             lpApplicationName;
    LPTSTR                               lpCommandLine;
    LPSECURITY_ATTRIBUTES       lpProcessAttributes;
    LPSECURITY_ATTRIBUTES       lpThreadAttributes;
    BOOL                                  bInheritHandles;
    DWORD                               dwCreationFlags;
    LPVOID                               lpEnvironment;
    LPCTSTR                             lpCurrentDirectory;
    LPSTARTUPINFO                   lpStartupInfo;
    LPPROCESS_INFORMATION      lpProcessInformation;
STARTUPINFO                  si = {0};
PROCESS_INFORMATION    pi = {0}

lpApplicationName      = "c:\calc.exe";  
 lpCommandLine         = NULL;          
 lpProcessAttributes   = NULL;  
 lpThreadAttributes    = NULL;  
 bInheritHandles        = FALSE;  
 dwCreationFlags       = CREATE_DEFAULT_ERROR_MODE |
                                           CREATE_NEW_CONSOLE |
                                              HIGH_PRIORITY_CLASS;
 lpEnvironment           = NULL;    
 lpCurrentDirectory      = NULL;  
 lpStartupInfo             = &si;          
 lpProcessInformation   = π    

 si.cb                     =  sizeof(si);   .
 si.dwX                  = 100;
 si.dwY                  = 100;
 si.dwXSize             = 400;
 si.dwYSize             = 200;
 si.dwXCountChars   = NULL;
 si.dwYCountChars   = NULL;
 si.dwFillAttribute     = FOREGROUND_RED ;
 si.dwFlags             =   STARTF_USEPOSITION | STARTF_USESIZE ;
 si.wShowWindow    = NULL;
 si.cbReserved2       = NULL;

CreateProcess(

    lpApplicationName ,
    lpCommandLine,
    lpProcessAttributes,
    lpThreadAttributes,
    bInheritHandles,
    dwCreationFlags,
    lpEnvironment,
    lpCurrentDirectory,
    lpStartupInfo,
    lpProcessInformation

   );

WaitForSingleObject( pi.hProcess, INFINITE );

……………….;
……………….;

CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );


Прошу прощения за корявый формат текста, в этом редакторе он почему-то выводится не так, как я его форматирую.
535
27 марта 2009 года
Нездешний
537 / / 17.01.2008
Код:
LPCTSTR                             lpApplicationName;
    LPTSTR                               lpCommandLine;
    LPSECURITY_ATTRIBUTES       lpProcessAttributes;
    LPSECURITY_ATTRIBUTES       lpThreadAttributes;
    BOOL                                  bInheritHandles;
    DWORD                               dwCreationFlags;
    LPVOID                               lpEnvironment;
    LPCTSTR                             lpCurrentDirectory;
    LPSTARTUPINFO                   lpStartupInfo;
    LPPROCESS_INFORMATION      lpProcessInformation;
STARTUPINFO                  si = {0};
PROCESS_INFORMATION    pi = {0}[COLOR="Red"];[/COLOR]

lpApplicationName      = "c:[COLOR="#ff0000"]\[/COLOR]\calc.exe";  
 lpCommandLine         = NULL;          
 lpProcessAttributes   = NULL;  
 lpThreadAttributes    = NULL;  
 bInheritHandles        = FALSE;  
 dwCreationFlags       = CREATE_DEFAULT_ERROR_MODE |
                                           [COLOR="#ff0000"]CREATE_NEW_CONSOLE[/COLOR] | //почему консоль-то?
                                              [COLOR="#ff0000"]HIGH_PRIORITY_CLASS[/COLOR]; //нафига HIGH_PRIORITY???
 lpEnvironment           = NULL;    
 lpCurrentDirectory      = NULL;  
 lpStartupInfo             = &si;          
 lpProcessInformation   = π    

 si.cb                     =  sizeof(si);   .
 si.dwX                  = 100;
 si.dwY                  = 100;
 si.dwXSize             = 400;
 si.dwYSize             = 200;
 si.dwXCountChars   = NULL;
 si.dwYCountChars   = NULL;
 si.dwFillAttribute     = FOREGROUND_RED ;
 si.dwFlags             =   STARTF_USEPOSITION | STARTF_USESIZE ;
 si.wShowWindow    = NULL;
 si.cbReserved2       = NULL;

CreateProcess(

    lpApplicationName ,
    lpCommandLine,
    lpProcessAttributes,
    lpThreadAttributes,
    bInheritHandles,
    dwCreationFlags,
    lpEnvironment,
    lpCurrentDirectory,
    lpStartupInfo,
    lpProcessInformation

   );

WaitForSingleObject( pi.hProcess, INFINITE );

……………….;
……………….;

CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
Эпопея "Я и Калькулятор плюс" продолжается :)
Или, точнее, "Калькулятор плюс Я"
30K
27 марта 2009 года
asmel
50 / / 05.03.2009
Нездешний Если предпочитаете MassLynx.exe, с большим удовольствием, но скорее всего у большинства пользователей форума его нет, в отличие от calc.exe. По поводу флагов от dwCreationFlags оставил специально экзотику, перепробовал все. Безрезультатно.

Калькулятор П(!!!)люс чуете разницу?!
92
27 марта 2009 года
Тень Пса
2.2K / / 19.10.2006
Автор, не нервничай и не груби, ок?... Тебе ж никто не должен. А то, что ты бьёшься с этим калькулятором, вообще проблемы, опять же, не формучан ) и таки тебе отвечают.

По сему, давай спокойно и культурно.
30K
27 марта 2009 года
asmel
50 / / 05.03.2009
Тень Пса В чем грубость?
Цитата:
Phodopus
вот ведь так и знал!
Код:
hWindow = FindWindow(NULL, "Калькулятор плюс");
hWindow = FindWindow(NULL, "Калькулятор Плюс");
чуешь разницу?! а из-за тебя пришлось этот "долбаный "Калькулятор Плюс"" качать и ставить!
Конец цитаты.

Я думал что это принятый здесь стиль общения. С большим уважением после ответов отношусь к Phodopus (без всякой иронии!). Про "Калькулятор Плюс" я, мне кажется, доступно объяснил - это модельный пример, у меня задача совсем другая. По поводу того, что здесь все с чем-нибудь бьются, мне кажется, что это для форума нормально. Разве не так?
246
27 марта 2009 года
GIZMO
1.8K / / 30.07.2004
Цитата: asmel
Почему при открытии процесса при помощи CreateProcess мой WindowXP не пускает окно этого (!!!) “Калькулятор Плюс” в назначенное ему CreateProcessом место?


Не нужно плодить по несколько тем, достаточно одной.

30K
29 марта 2009 года
asmel
50 / / 05.03.2009
После этого сообщения меня скорее всего забанят, но все равно напишу несколько фраз. Демократия - она везде демократия. Когда ползаешь, тебя еще терпят, стоит проявить малейшую независимость - тебя тут же всей демократией начинают мочить. Но все же к делу:
исходя из моего скудного опыта в Buildere и WinAPI могу все же сделать вывод - CreateProcess в Buildere и WinAPI это все равно что 2*2 основа таблицы умножения. И то, что никто из экспертов, специалистов, ветеранов, пенсионеров и.т.п не хочет (не может) ответить, почему
2*2<>4 свидетельствует либо о жлобстве, либо о некомпетентности. Вместо ответов:

Цитата:

GIZMO - Не нужно плодить по несколько тем, достаточно одной.


Ну так и в первой теме ответ так и не был найден.

Цитата:

Тень Пса - Автор, не нервничай и не груби, ок?... Тебе ж никто не должен. А то, что ты бьёшься с этим калькулятором, вообще проблемы, опять же, не формучан ) и таки тебе отвечают.
По сему, давай спокойно и культурно.


Никакой грубости и рядом не стояло

Цитата:

Нездешний -
CREATE_NEW_CONSOLE | //почему консоль-то?
HIGH_PRIORITY_CLASS; //нафига HIGH_PRIORITY???


Вопрос-то исходил от меня, я надеялся на ответ, а не на иронические высказывания.

Ну если не знаете ответа (кстати в этом ничего предосудительного и плохого нет) зачем других уделывать.

5
29 марта 2009 года
hardcase
4.5K / / 09.08.2005
Цитата: asmel
Вопрос-то исходил от меня, я надеялся на ответ, а не на иронические высказывания.

Нездешний вам предложил самостоятельно разобраться в семантике выделенных флагов, они действительно не к месту использованы.

Цитата: asmel
Ну так и в первой теме ответ так и не был найден.

Вы правда думаете, что вероятность ответа зависит от количества топиков? Скорее тут обратная пропорциональность :))

30K
29 марта 2009 года
asmel
50 / / 05.03.2009
hardcase
Цитата:
Нездешний вам предложил самостоятельно разобраться в семантике выделенных флагов, они действительно не к месту использованы.


Ну не смог я самостоятельно разобраться, поэтому в форум и обращаюсь. Флаги перепробовал все, которые нашел. Про темы - не связаны эти вопросы, их объединяет только использование общедоступного "Калькулятор Плюс".

1
29 марта 2009 года
kot_
7.3K / / 20.01.2000
Вы задаете вопросы, источник которых ваша собственная невнимательность. При этом имеете наглость хамить и требовать ответ. Мало того - вы имеете наглость размещать ссылки на сторонние ресурсы, которые имеют признаки AdvWare (я о теме в разделе по басику).
Вам не кажется киса - что вы заслуживаете наказания?
В связи с хронической невнимательностью автора тема закрыта.
Решение что сделать с вами - я выставляю на обсуждение в модераторском разделе - может быть у кого-то будет что либо в вашу защиту или наоборот.
Если вам чтото хочется сказать в свое оправдание - используйте личные сообщения кому либо из модераторов - например мне или GIZMO.
До момента пока по вас не будет принято решение - ЛЮБАЯ попытка разместить сообщение в ЛЮБОМ из разделов будет расцениваться как спам. Надеюсь я понятно объяснил?
З.Ы. С чего вы решили что у нас тут демократия? Вы грубейшим образом ошиблись.:D
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог