Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
16 / 16 / 8
Регистрация: 05.04.2015
Сообщений: 104
1

Прикрепить + программно запустить .exe Файл + бонус

23.01.2016, 00:06. Показов 1228. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здрасьте,
Нужно прикрепить файл в проект так как таскать файл за главным файлом не красиво, как для меня... Затем программно вызвать запуск этого приложения...
Не знаю можно ли или нет прикрепить как нибудь исполняющий файл к проекту, но я знаю что делать дальше... можно его взять рассположить в папке например C:\\ и запустить, но как реализовать это не имею не единого понятия, пожалуйста не кидайте ссылки на левые сайты, ответ сюда. Если не понятно, пишите, объясню.
БОНУС: у меня есть окно, да? и я создал ещё один MyRegisterClass оно открывается, работает, всё хорошо... НО вот в чём вопрос не как немогу сделать чтобы в InitInstance точнее могу сделать но не понимаю как... Нужно чтобы после всех функций выполненых в WndProc в конце было ShowWindows hWnd2 SW_show, а в IniTInst SW_HIDE НО оно не работает я не понимаю почему. Если нужны коды не пишите, что вы не ванги просто напишите чтобы я скинул код...
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.01.2016, 00:06
Ответы с готовыми решениями:

Запустить exe файл программно
Доброго времени года вам уважаемые участники. Вопрос: как реализовать функцию автоматического...

Как программно запустить exe файл?
system("start /b "qwer.exe");не подходит Заранее всем огромное спасибо!!!

Запустить exe-файл и нажать на кнопку этого exe (файл delphi)
Как осуществить с помощью php: На сайте нажимаю кнопку, далее, после нажатия: 1) идет запуск exe...

EXE файл прикрепить к Delphi
Можно ли как то прикрепить EXE или BAT файл к Delphi, сделать кнопку которая эту программу...

4
240 / 213 / 84
Регистрация: 18.03.2010
Сообщений: 750
23.01.2016, 01:37 2
Цитата Сообщение от vuchastyi Посмотреть сообщение
Нужно прикрепить файл в проект
Ну так в чем вопрос? Добавляйте файл в ресурсы программы. Потом извлекайте и ...
Цитата Сообщение от vuchastyi Посмотреть сообщение
я знаю что делать дальше...

Не по теме:


Цитата Сообщение от vuchastyi Посмотреть сообщение
Если нужны коды не пишите, что вы не ванги просто напишите чтобы я скинул код..
А сразу код выложить, видимо религия не позволяет...

1
16 / 16 / 8
Регистрация: 05.04.2015
Сообщений: 104
23.01.2016, 02:05  [ТС] 3
1. Прикрепить файл .exe в проект + расположить в папке C:\\
2. После всех функций выполненных в WndProc применить SW_SHOW hWnd2(у которого изначально указано SW_HIDE)

jonson,
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
#include "stdafx.h"
#include "gate.h"
#include <stdio.h>
#define MAX_LOADSTRING 100
 
// Global Variables:
HINSTANCE hInst;                                // current instance
TCHAR szTitle[MAX_LOADSTRING];                  // The title bar text
TCHAR szWindowClass[MAX_LOADSTRING];    
TCHAR szWindowClass2[MAX_LOADSTRING]; // the main window class name
TCHAR mainMessage[] = L"Загрузка интерфейса";
TCHAR justMessage[] = L"Здрасbте";
HANDLE hFile; 
 
 
// Forward declarations of functions included in this code module:
ATOM                MyRegisterClass(HINSTANCE hInstance);
ATOM                MyRegisterClass2(HINSTANCE hInstance);
BOOL                InitInstance(HINSTANCE, int);
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK    WndProc2(HWND, UINT, WPARAM, LPARAM);
 
int APIENTRY _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);
 
    // TODO: Place code here.
    MSG msg;
    HACCEL hAccelTable;
 
    // Initialize global strings
    LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    LoadString(hInstance, IDC_VIRUS32, szWindowClass, MAX_LOADSTRING);
    LoadString(hInstance, IDC_VIRUS33, szWindowClass2, MAX_LOADSTRING);
    MyRegisterClass(hInstance);
    MyRegisterClass2(hInstance);
 
    // Perform application initialization:
    if (!InitInstance (hInstance, nCmdShow))
    {
        return FALSE;
    }
 
    hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_VIRUS32));
    hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_VIRUS33));
 
    // Main message loop:
    while (GetMessage(&msg, NULL, 0, 0))
    {
        if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }
 
    return (int) msg.wParam;
}
 
ATOM MyRegisterClass(HINSTANCE hInstance)
{
    WNDCLASSEX wcex;
 
    wcex.cbSize = sizeof(WNDCLASSEX);
 
    wcex.style          = ...;
    wcex.lpfnWndProc    = WndProc;
    wcex.cbClsExtra     = 0;
    wcex.cbWndExtra     = 0;
    wcex.hInstance      = hInstance;
    wcex.hIcon          = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_VIRUS32));
    wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground  = (HBRUSH)GetStockObject(BLACK_BRUSH);
    wcex.lpszMenuName   = NULL;
    wcex.lpszClassName  = szWindowClass;
    wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
 
    return RegisterClassEx(&wcex);
}
 
ATOM MyRegisterClass2(HINSTANCE hInstance)
{
    WNDCLASSEX wcex;
 
    wcex.cbSize = sizeof(WNDCLASSEX);
 
    wcex.style          = ...;
    wcex.lpfnWndProc    = WndProc2;
    wcex.cbClsExtra     = 0;
    wcex.cbWndExtra     = 0;
    wcex.hInstance      = hInstance;
    wcex.hIcon          = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_VIRUS32));
    wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground  = (HBRUSH)GetStockObject(BLACK_BRUSH);
    wcex.lpszMenuName   = NULL;
    wcex.lpszClassName  = szWindowClass2;
    wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
 
    return RegisterClassEx(&wcex);
}
 
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   HWND hWnd;
   HWND hWnd2;
 
   hInst = hInstance; // Store instance handle in our global variable
 
   hWnd = CreateWindow(
       szWindowClass, 
       L"", 
       WS_POPUP,
       GetSystemMetrics(SM_CXSCREEN)/2-100, 
       GetSystemMetrics(SM_CYSCREEN)/2-25, 
       200, 
       50, 
       NULL, 
       NULL, 
       hInstance, 
       NULL);
 
   hWnd2 = CreateWindow(
       szWindowClass2, 
       L"", 
       WS_POPUP,
       0, 
       0, 
       GetSystemMetrics(SM_CXSCREEN), 
       GetSystemMetrics(SM_CYSCREEN), 
       hWnd, 
       NULL, 
       hInstance, 
       NULL);
 
   if (!hWnd)
   {
      return FALSE;
   }
 
    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);
 
    ShowWindow(hWnd2, SW_HIDE);
    UpdateWindow(hWnd2);
   return TRUE;
}
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    HDC hdc;
    PAINTSTRUCT ps;
    RECT rect;
    COLORREF colorText = RGB(255, 255, 255);
 
    switch (message)
    {
    case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        GetClientRect(hWnd, &rect);
        SetTextColor(hdc, colorText);
        SetBkColor(hdc,TRANSPARENT);
        DrawText(hdc, mainMessage, -1, &rect, DT_SINGLELINE|DT_CENTER|DT_VCENTER);
        SendMessage(hWnd2,SW_SHOW,0,0); //ShowWindows тоже пробовал 
        EndPaint(hWnd, &ps);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}
 
LRESULT CALLBACK WndProc2(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    HDC hdc;
    PAINTSTRUCT ps;
    RECT rect;
    COLORREF colorText = RGB(255, 255, 255);
    const HFONT hFont=(HFONT)GetStockObject(DEFAULT_GUI_FONT);
    switch (message)
    {
    case WM_PAINT:
            hdc=BeginPaint(hWnd,&ps);            
            SetBkColor(hdc,TRANSPARENT);
            SetTextColor(hdc,RGB(255,255,255));
            DrawText(hdc, justMessage, -1, &rect, DT_SINGLELINE|DT_CENTER|DT_VCENTER);
            EndPaint(hWnd,&ps);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}
Цитата Сообщение от jonson Посмотреть сообщение
Добавляйте файл в ресурсы программы. Потом извлекайте и ...
с этого момента по-подробней пожалуйста, как его извлечь?

Как его теперь запустить?
C++
1
#define IDR_EXE1 138
0
240 / 213 / 84
Регистрация: 18.03.2010
Сообщений: 750
24.01.2016, 01:13 4
Лучший ответ Сообщение было отмечено vuchastyi как решение

Решение

Цитата Сообщение от vuchastyi Посмотреть сообщение
с этого момента по-подробней пожалуйста, как его извлечь?
1. В блоке ресурсов находите требуемый ресурс - FindResource
2. Загружаете его в память - LoadResource
3. Получаете указатель на первый байт данных ресурса - LockResource
4. Получаете полный размер данных ресурса - SizeofResource
5. Создаете файл и выводите в него данные ресурса. CreateFile -> WriteFile
Ну и дальше, работаете уже с файлом.

как-то так...
1
16 / 16 / 8
Регистрация: 05.04.2015
Сообщений: 104
24.01.2016, 16:35  [ТС] 5
jonson, у меня Visual 2005 Pro думаю здесь полегче будет

Решил вот так:
C++
1
2
3
4
5
6
7
8
9
HRSRC    hResInfo       = ::FindResource(hInst, (LPCWSTR)IDR_EXE_STARTER1, L"EXE_STARTER");
HGLOBAL  hRes           = ::LoadResource(hInst, hResInfo);
LPVOID   memRes         = ::LockResource(hRes);
DWORD    sizeRes        = ::SizeofResource(hInst, hResInfo);
 
HANDLE hFile = ::CreateFile(L"C:\\1.exe", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
DWORD dwWritten = 0;
::WriteFile(hFile, memRes, sizeRes, &dwWritten, NULL);
::CloseHandle(hFile);
А вторую проблему решил вот так:
C++
1
2
3
4
5
6
7
case WM_CREATE:     
            SetTimer(hWnd, 0, 3000, NULL);     
        break;     
    case WM_TIMER: 
            ShowWindow(hWnd2,SW_SHOW);
            KillTimer(hWnd, 0);
        break;
0
24.01.2016, 16:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.01.2016, 16:35
Помогаю со студенческими работами здесь

Как запустить программу svhost.exe программно с параметрами?
Всем привет, помогите разобраться у меня есть программа запускается она через bat с определенными...

Как прикрепить текстовый файл к готовому проекту в виде exe-файла?
Здравствуйте. Пишу проект в виде Window Forms, в ходе его работы подключаются данные из текстового...

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

Как программно найти и запустить файл
Здравствуйте ! Необходимо программно запустить пакет анализа данных (Регрессия...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru