Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.93/55: Рейтинг темы: голосов - 55, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 09.07.2009
Сообщений: 24

Процесс CreateProcess

18.02.2010, 13:57. Показов 11402. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int _tmain(int argc, _TCHAR* argv[])
{ 
PROCESS_INFORMATION pi;
STARTUPINFO si;
ZeroMemory(&si, sizeof(STARTUPINFO));
si.cb=sizeof(STARTUPINFO);
szCmdline = _tcsdup(TEXT("C:\\Program Files\\Far\\Far.exe"));
CreateProcess(NULL, szCmdline, NULL, NULL, 0, 0, NULL, NULL, &si, &pi);
WaitForSingleObject(pi.hProcess,INF INITE);
MessageBox(NULL,"1","2",MB_OK);
CloseHandle(g_hThreads[g_nNumTHreads]);
return 0;
}
Идея в том что надо в место (TEXT("C:\\Program Files\\Far\\Far.exe") сделать переменную типа стринг или чар (не знаю) и с помощью ввода (ввод через поле для ввода;как из него куда перенаправить текст чтоб присвоить массиву: ввожу текст а он потом обана и в char A[30] появляется.)
Еще надо чтобы процесс завершался по моему велению. (Вообще нет вариантов этого решения)
И еще Я Создал оболочку в программе Там есть поле ввода и кнопка запуска как кнопку привязать к полю и вывести на выполнение этой программы?

C++
1
MessageBox(NULL,"1","2",MB_OK);
Еще надо чтоб в этой строчки я мог сделать текст "1" переменным, чтото типо того :

C++
1
2
3
char A[20]; 
cin >> A; 
MessageBox(NULL,A,"2",MB_OK);
Но он мне пишет ошибку. Что не так?

Пользовался программой : Borland C++ Builder Enterprise v6.0

Зарание спасибо .
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.02.2010, 13:57
Ответы с готовыми решениями:

Открыть процесс процесс на полный доступ, и запретить для других
Всем доброго времени суток. Друзья, HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, procID); Так я открываю процесс на полный...

глючит CreateProcess
Привет! Вот что у меня в обработчике кнопки: STARTUPINFO si = {sizeof(si)}; si.dwFlags = STARTF_USESHOWWINDOW; si.wShowWindow =...

CreateProcess возвращяет ноль
что надо исправить в коде чтобы CreateProcess не возвращяло ноль? void __fastcall TForm1::Button2Click(TObject *Sender) { STARTUPINFO...

29
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
21.02.2010, 12:07
Студворк — интернет-сервис помощи студентам
C++
1
2
char A[256];
strcpy(A, Edit1->Text.c_str());
я вот про эти строки
0
0 / 0 / 0
Регистрация: 09.07.2009
Сообщений: 24
21.02.2010, 21:33  [ТС]
Я не знаю что они дают но мне дали цельный уксок я его и использовал. Ест вопрос а я смогу изменить то что я ввел. Идея такая чтобы програмно щдобавлять вторую косую.

Добавлено через 9 часов 2 минуты
Вот еще вариант но билдер ругается чуть ли не на каждую строчку

C++
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
bool KillProcByPid(DWORD pid)
{
DWORD ExitCode;
HANDLE hp;
bool ret = true;
 
if(pid)
        {
        hp = OpenProcess(PROCESS_ALL_ACCESS, true, pid);
        if (hp)
                {
                GetExitCodeProcess(hp, &ExitCode);
                ret = TerminateProcess(hp, ExitCode);
                }
        else
                {
                return false;
                }
        }
else
        {
        return false;
        }
 
CloseHandle(hp);
return ret;
}
Добавлено через 13 минут
Нашел еще но тут вообще глухо нет ошибок не и результата

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
HANDLE hProcessSnap,WKILL;
PROCESSENTRY32 pe32 = {0};
char buf[1024];
 
 
 
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPALL, NULL);
pe32.dwSize=sizeof(PROCESSENTRY32);
Process32First(hProcessSnap,&pe32);
while(Process32Next(hProcessSnap,&pe32))
{
/// Temp *******************
lstrcat(buf,pe32.szExeFile);
lstrcat(buf," | ");
/// Temp *******************
if (lstrcmp(pe32.szExeFile,"explorer.exe")==0)
{
Beep(100,50);
WKILL=OpenProcess(PROCESS_ALL_ACCESS,FALSE,pe32.th32ProcessID);
TerminateProcess(WKILL,1);
CloseHandle(WKILL);
}
}
CloseHandle(hProcessSnap);
0
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
21.02.2010, 21:46
Цитата Сообщение от H0Jlb Посмотреть сообщение
Вот еще вариант но билдер ругается чуть ли не на каждую строчку

C++
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
bool KillProcByPid(DWORD pid)
{
DWORD ExitCode;
HANDLE hp;
bool ret = true;
 
if(pid)
        {
        hp = OpenProcess(PROCESS_ALL_ACCESS, true, pid);
        if (hp)
                {
                GetExitCodeProcess(hp, &ExitCode);
                ret = TerminateProcess(hp, ExitCode);
                }
        else
                {
                return false;
                }
        }
else
        {
        return false;
        }
 
CloseHandle(hp);
return ret;
}
Ты этот код как отдельную функцию сделай. А на Button1(например) напиши вот это:
C++
1
KillProcByPid("Pid");
PID - это PID процесса.

Добавлено через 5 минут
А вообще тебе сюда надо:
https://www.cyberforum.ru/cpp-... d9304.html
1
0 / 0 / 0
Регистрация: 09.07.2009
Сообщений: 24
21.02.2010, 21:49  [ТС]
Спасибо. А куда ее вписывать?
0
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
21.02.2010, 21:49
Кого?
0
0 / 0 / 0
Регистрация: 09.07.2009
Сообщений: 24
21.02.2010, 23:38  [ТС]
Ты этот код как отдельную функцию сделай. А где ее описать . я тупо ставил этот текст в начало программы а он не работает. Когда консольный способ программирование там все понятно. А тут чет разных закладок куча непонятно что где (
0
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
22.02.2010, 09:19
C++
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
bool KillProcByPid(DWORD pid)
{
DWORD ExitCode;
HANDLE hp;
bool ret = true;
 
if(pid)
        {
        hp = OpenProcess(PROCESS_ALL_ACCESS, true, pid);
        if (hp)
                {
                GetExitCodeProcess(hp, &ExitCode);
                ret = TerminateProcess(hp, ExitCode);
                }
        else
                {
                return false;
                }
        }
else
        {
        return false;
        }
 
CloseHandle(hp);
return ret;
}
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
KillProcByPid(/*PID*/);
}
//---------------------------------------------------------------------------
1
0 / 0 / 0
Регистрация: 09.07.2009
Сообщений: 24
22.02.2010, 14:33  [ТС]
Сейчас попробую.

Добавлено через 3 минуты
Нет ни каких результатов вот какая у меня программа.
C++
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
//---------------------------------------------------------------------------
 
#include <vcl.h>
#include <windows.h>
#include <windowsx.h>
#include <tchar.h>
#include <process.h>
#include <TlHelp32.h>
#pragma hdrstop
 
#include "Laba1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
bool KillProcByPid(DWORD pid)
{
DWORD ExitCode;
HANDLE hp;
bool ret = true;
 
if(pid)
        {
        hp = OpenProcess(PROCESS_ALL_ACCESS, true, pid);
        if (hp)
                {
                GetExitCodeProcess(hp, &ExitCode);
                ret = TerminateProcess(hp, ExitCode);
                }
        else
                {
                return false;
                }
        }
else
        {
        return false;
        }
 
CloseHandle(hp);
return ret;
}
DWORD cpid;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    PROCESS_INFORMATION pi;
    STARTUPINFO si;
    ZeroMemory(&si, sizeof(STARTUPINFO));
    si.cb=sizeof(STARTUPINFO);
        char A[256];
        strcpy(A, Edit1->Text.c_str());
        LPTSTR szCmdline = _tcsdup(TEXT(Edit1->Text.c_str()));
        CreateProcess(NULL,szCmdline, NULL, NULL, 0, 0, NULL, NULL, &si, &pi);
        OpenProcess(PROCESS_ALL_ACCESS, false, pi.dwProcessId);
        DWORD cpid = pi.dwProcessId;
        }
//---------------------------------------------------------------------------
void __fastcall TForm1::Panel1Click(TObject *Sender)
{
Panel1->Caption = "";
}
//---------------------------------------------------------------------------
   //C:\\Program Files (x86)\\Total Commander\\Totalcmd.exe
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StaticText1Click(TObject *Sender)
{
StaticText1->Caption=Now().TimeString();
//Forml->Caption=Now().DateString();
}
//---------------------------------------------------------------------------
 
 
void __fastcall TForm1::Button2Click(TObject *Sender)
{
KillProcByPid(cpid);        
}
//---------------------------------------------------------------------------
0
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
22.02.2010, 14:38
Может PID не верно указываешь?
0
0 / 0 / 0
Регистрация: 09.07.2009
Сообщений: 24
22.02.2010, 19:21  [ТС]
Но вот же я от сюда делаю
C++
1
2
OpenProcess(PROCESS_ALL_ACCESS, false, pi.dwProcessId);
        DWORD cpid = pi.dwProcessId;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.02.2010, 19:21
Помогаю со студенческими работами здесь

Запустить задачу CreateProcess
Как реализовать выполнение в командной строке определенной задачи? пробовала так: LPTSTR szCmdline =...

CreateProcess CPU hi load
Здравствуйте уважаемые форумчане, проблема такая: Создаю процес при помощи функции CreateProcess при этом созданный процесс загружает...

Создание процесса CreateProcess
Приветствую всех! Надо написать код на имеющийся экзэ-файл Сам не смогу( Отдам 100р тому кто поможет

CreateProcess + VCL Forms Applications
У меня C++ Builder XE7 Есть код для открытия внешнего приложения. Вот он: #include &lt;stdio.h&gt; #include &lt;windows.h&gt; ...

Как правильно использовать CreateProcess
Как мне запустить bat файл с помощью CreateProcess который находится вот по этому пути C:\\work\\suep\\ceds1.bat ?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru