Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
2 / 2 / 0
Регистрация: 31.07.2012
Сообщений: 71

Как создать процесс в MFC?

27.08.2012, 04:57. Показов 2082. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
всем привет!
нашел пример запуска внешнего файла:
C++
1
2
3
4
5
6
7
8
9
10
11
12
STARTUPINFO cif;
    ZeroMemory(&cif,sizeof(STARTUPINFO));
    PROCESS_INFORMATION pi;
 
    if (CreateProcess("C:\\MtkTool.exe",NULL,NULL,NULL,FALSE,NULL,NULL,NULL,&cif,&pi)==TRUE)
    {
        CString str;
        str.Format("%i", pi.hProcess);
        AfxMessageBox(str);
        Sleep(1000);            
        TerminateProcess(pi.hProcess, NO_ERROR);
    } else AfxMessageBox("error");
в консоле работает без проблем, в вот в MFC-приложении выдает ошибку, что с WinExec, что с CreateProcess одинаково. в чем может быть проблема?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.08.2012, 04:57
Ответы с готовыми решениями:

Как создать процесс (MFC application *.exe) из c# Windows Service?
сервис создается, инсталлируется из запускается фактически кнопкой мыши, новый процесс создается также. но это - поотдельности. если мы...

MFC как создать?
Как запустить MFC в Visual C++ 2008, у меня она есть, но не активна(не могу отжать checkBox)?

Как создать форму с помощью mfc?
растолкуйте мне, как создать Form, а то замучился уже

7
 Аватар для MegaMozg
45 / 45 / 3
Регистрация: 19.12.2008
Сообщений: 110
27.08.2012, 05:47
Реализация многопоточности на языке C++ с помощью классов MFC
0
2 / 2 / 0
Регистрация: 31.07.2012
Сообщений: 71
27.08.2012, 07:22  [ТС]
продолжаю задавать вопросы...
почитал про многозадачность, нашел пример, кот. должен работать, но у меня он не работает

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 ....
UINT MyFunction(LPVOID pParam);
....
 
UINT CDiaDlg::MyFunction(LPVOID pParam)
{
    STARTUPINFO sif;
    ZeroMemory(&sif,sizeof(STARTUPINFO));
    PROCESS_INFORMATION pi;
    if (CreateProcess("c:\\MtkTool.exe",NULL,NULL,NULL,FALSE,NULL,NULL,NULL,&sif,&pi)==TRUE)
    {
        CString str;
        str.Format("%i", pi.hProcess);
        AfxMessageBox(str);
        Sleep(1000);        
        //TerminateProcess(pi.hProcess, NO_ERROR);
    } else AfxMessageBox("error");
 
    return 0;
}
....
CWinThread* myWinThread = AfxBeginThread(*MyFunction, NULL);
ругается на AfxBeginThread:
error C2276: '*' : illegal operation on bound member function expression

пробовал так
CWinThread* myWinThread = AfxBeginThread((AFX_THREADPROC)&MyFuncti on, NULL);

error C2276: '&' : illegal operation on bound member function expression
0
 Аватар для MegaMozg
45 / 45 / 3
Регистрация: 19.12.2008
Сообщений: 110
27.08.2012, 07:29
C++
1
CWinThread* myWinThread = AfxBeginThread(MyFunction, NULL);
почитайте про указатели на функции
0
2 / 2 / 0
Регистрация: 31.07.2012
Сообщений: 71
27.08.2012, 07:43  [ТС]
C++
1
CWinThread* myWinThread = AfxBeginThread(MyFunction, NULL);
error C2665: 'AfxBeginThread' : none of the 2 overloads can convert parameter 1 from type 'unsigned int (void *)'
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
27.08.2012, 17:34
rambayke, приведи весь проект, к примеру ты мог не сделать AfxWinInit вначале и всё опрокидывается даже из за этого. По ссылке простой код распарраллеливания с помощью _beginthread, он будет работать и в MFC Что то типа goto
0
2 / 2 / 0
Регистрация: 31.07.2012
Сообщений: 71
29.08.2012, 04:51  [ТС]
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include "stdafx.h"
#include "Cont.h"
#include "ContDlg.h"
 
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
 
/////////////////////////////////////////////////////////////////////////////
// CContDlg dialog
 
CContDlg::CContDlg(CWnd* pParent /*=NULL*/)
    : CDialog(CContDlg::IDD, pParent)
{
    //{{AFX_DATA_INIT(CContDlg)
        // NOTE: the ClassWizard will add member initialization here
    //}}AFX_DATA_INIT
    // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
 
void CContDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CContDlg)
        // NOTE: the ClassWizard will add DDX and DDV calls here
    //}}AFX_DATA_MAP
}
 
BEGIN_MESSAGE_MAP(CContDlg, CDialog)
    //{{AFX_MSG_MAP(CContDlg)
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()
 
/////////////////////////////////////////////////////////////////////////////
// CContDlg message handlers
 
BOOL CContDlg::OnInitDialog()
{
    CDialog::OnInitDialog();
 
    // Set the icon for this dialog.  The framework does this automatically
    //  when the application's main window is not a dialog
    SetIcon(m_hIcon, TRUE);         // Set big icon
    SetIcon(m_hIcon, FALSE);        // Set small icon
 
CWinThread* myWinThread = AfxBeginThread(MyFunction, NULL); 
    
    return TRUE;  // return TRUE  unless you set the focus to a control
}
 
// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.
 
void CContDlg::OnPaint() 
{
    if (IsIconic())
    {
        CPaintDC dc(this); // device context for painting
 
        SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
 
        // Center icon in client rectangle
        int cxIcon = GetSystemMetrics(SM_CXICON);
        int cyIcon = GetSystemMetrics(SM_CYICON);
        CRect rect;
        GetClientRect(&rect);
        int x = (rect.Width() - cxIcon + 1) / 2;
        int y = (rect.Height() - cyIcon + 1) / 2;
 
        // Draw the icon
        dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {
        CDialog::OnPaint();
    }
}
 
// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CContDlg::OnQueryDragIcon()
{
    return (HCURSOR) m_hIcon;
}
 
UINT CContDlg::MyFunction(LPVOID pParam)
{
    STARTUPINFO sif;
    ZeroMemory(&sif,sizeof(STARTUPINFO));
    PROCESS_INFORMATION pi;
    if (CreateProcess("C:\\MtkTool.exe",NULL,NULL,NULL,FALSE,NULL,NULL,NULL,&sif,&pi)==TRUE)
    {
        CString str;
        str.Format("%i", pi.hProcess);
        AfxMessageBox(str);
        Sleep(1000);        
        //TerminateProcess(pi.hProcess, NO_ERROR);
    } else AfxMessageBox("error");
 
    return 0;
}
я тока начал работать с MFC, ничего не соображаю. мне всего то надо запустить другое приложение и на диалоге выложить кое-что с этой проги.
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
29.08.2012, 08:46
посмотри
пару статей
http://www.firststeps.ru/mfc/steps/r.php?63
http://www.firststeps.ru/mfc/steps/r.php?128

Цитата Сообщение от rambayke Посмотреть сообщение
UINT MyFunction(LPVOID pParam);
Цитата Сообщение от rambayke Посмотреть сообщение
UINT CDiaDlg::MyFunction(LPVOID pParam)
имена кончились????
если вот это

Цитата Сообщение от rambayke Посмотреть сообщение
....
CWinThread* myWinThread = AfxBeginThread(*MyFunction, NULL);
ты вызываешь внутри класса
Цитата Сообщение от rambayke Посмотреть сообщение
CDiaDlg::
то указывать *MyFunction у тебя будет на CDiaDlg::MyFunction
тогда ее нужно делать статической
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.08.2012, 08:46
Помогаю со студенческими работами здесь

Как правильно создать проект MFC?
Помогите! Что выбирать из всего этого?

Как создать глобальную переменную в MFC?
всем доброго времени суток! простите за глупый вопрос. скажите, плз, как создать глобальную переменную в MFC? приложение диалоговое. я...

Как создать поток (Thread) в с++ mfc?
Здравствуйте!) Не могу ни как понять, как создать поток в с++ mfc? В c# и с++ делал потоки, но в mfc как-то по другому они чтоль...

Как создать проект MFC если его нет в студии? Как расширить студию?
Парни, надо напрогать в проекте MFC окно, клац в свою студию - а у меня только винапи и с/с++/с# ? Я так понял студия расширяется (у...

Как создать меню в mfc в msvs 2008?
может кто подскажет, как меню создать


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru