Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
Леонид Каруна
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 176
1

Создание процесса работает только если указывать полный путь расположения файла

20.04.2015, 09:09. Просмотров 1032. Ответов 23
Метки нет (Все метки)

Доброго времени суток, возникла проблема.
В программе идет запуск других программ:
C++ (Qt)
1
CreateProcess(L"c:\\Users\\Леонид\\Desktop\\Tech Quen\\KYR\\WinPad\\Debug\\Menu.exe", NULL, NULL, NULL, FALSE, NULL, NULL, NULL, &cif, &pi);
Работает только если указывать полный путь расположения файла, так вот, как сделать что бы открывало на любом компьютере вне зависимости от расположения файла?
Заранее благодарен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.04.2015, 09:09
Ответы с готовыми решениями:

Можно ли не указывать полный путь к БД, если она находится в директории приложения
У меня вопрос: можно ли при подключении БД не указывать полный путь к ней, если...

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

Не работает Bulk, если не указан полный путь к udl файлу
string connectionString = "File Name = conn.udl";...

Как мне сделать так чтобы не надо было указывать полный путь
Добрый день , форумчане. Как мне сделать так чтобы не надо было указывать...

Имя и полный путь запущенного процесса
Мне нужно узнать полный путь процесса, который сейчас запущен (именно той...

23
Людвиг Бодмер
356 / 355 / 211
Регистрация: 29.03.2013
Сообщений: 866
Завершенные тесты: 4
20.04.2015, 16:08 21
Леонид Каруна, не работает в смысле - не компилируется? (тогда какие ошибки?) Или не запускается Menu.exe ?
0
zenden2k
43 / 28 / 12
Регистрация: 21.04.2015
Сообщений: 82
21.04.2015, 14:27 22
Как получить имя исполняемого файла и папку, в которой он находится:
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
#include <windows.h>
#include <tchar.h>
 
LPTSTR ExtractFilePath(LPCTSTR FileName, LPTSTR buf)
{  
    int i, len = lstrlen(FileName);
    for(i=len; i>=0; i--)
    {
        if(FileName[i] == _T('\\'))
            break;
    }
    lstrcpyn(buf, FileName, i+2);
    return buf;
}
 
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPTSTR lpstrCmdLine, int nCmdShow)
{   
    // szFileName - содержит путь к exe-файлу
    // szPath - содержит путь к папке, в которой находится exe-файл
    TCHAR szFileName[MAX_PATH], szPath[MAX_PATH];
    GetModuleFileName(0, szFileName, MAX_PATH);
    ExtractFilePath(szFileName, szPath);
    //Запуск процесса
    STARTUPINFO cif;
    PROCESS_INFORMATION pi;
    lstrcat(szPath, _T("Menu.exe"));
    CreateProcess(szPath, NULL, NULL, NULL, FALSE, NULL, NULL, NULL, &cif, &pi);
    return 0;
}
0
Леонид Каруна
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 176
21.04.2015, 16:08  [ТС] 23
Код компилится, но так же не открывает ничего

Добавлено через 2 минуты
Да что же такое, элементарно открыть через программу файл и ни как не получается.

Добавлено через 8 минут
Людвиг Бодмер, код не черкает, но и не работает, не создает необходимый процесс.
0
marat_miaki
149 / 138 / 86
Регистрация: 08.04.2013
Сообщений: 558
22.04.2015, 11:28 24
вот чей то с форума может поможет на VS 2008 работает
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
//#include "stdafx.h"
#include <windows.h>
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <tchar.h>
 
 
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
    HWND zapproc,
         procclc,
         udalclc,
         listbox,
         stat,
         hStatInfo;
    
    
 
int WINAPI WinMain (HINSTANCE hThisInstance,HINSTANCE hPrevInstance,LPSTR lpszArgument,int nFunsterStil)
{
    
    TCHAR szClassName[ ] = L"WindowsApp";
    HWND hwnd;              
    MSG messages;           
    WNDCLASSEX wincl;        
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;     
    wincl.style = CS_DBLCLKS;               
    wincl.cbSize = sizeof (WNDCLASSEX);
    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;                 
    wincl.cbClsExtra = 0;                     
    wincl.cbWndExtra = 0;                   
    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
    if (!RegisterClassEx (&wincl))
        return 0;
    hwnd = CreateWindowEx (0,szClassName,L"Windows App",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,544,500,HWND_DESKTOP,NULL,hThisInstance,NULL );
    ShowWindow (hwnd, nFunsterStil);
    while (GetMessage (&messages, NULL, 0, 0))
    { 
        TranslateMessage(&messages);
        DispatchMessage(&messages);
    }
    return messages.wParam;
}
 
 
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    int i=0;
    int poziproc=0;
    const int count = 5;
    STARTUPINFO si;
    TCHAR process[30];
    HANDLE hProc[count];
    static PROCESS_INFORMATION pi[count];
    
    switch (message)                  
    {
        case WM_CREATE:
            
            zapproc = CreateWindow(L"EDIT", L"", WS_VISIBLE| WS_CHILD | WS_BORDER, 10,40,232,20, hwnd,NULL,NULL,NULL);
            procclc = CreateWindow(L"BUTTON", L"Запустить процесс", WS_VISIBLE| WS_CHILD | WS_BORDER, 10,70,232,20, hwnd,(HMENU)1,NULL,NULL);
            udalclc = CreateWindow(L"BUTTON", L"Удалить процесс", WS_VISIBLE| WS_CHILD | WS_BORDER, 10,270,232,20, hwnd,(HMENU)2,NULL,NULL);
            udalclc = CreateWindow(L"BUTTON", L"Получить инф-ю о процессе", WS_VISIBLE| WS_CHILD | WS_BORDER, 10,300,232,20, hwnd,(HMENU)3,NULL,NULL);            
            listbox = CreateWindow(L"LISTBOX", L"",WS_VISIBLE| WS_CHILD , 10,100,232,150, hwnd,NULL,NULL,NULL);
            stat = CreateWindow(L"STATIC", L"Примеры возможных процессов: \n 1. explorer.exe \n 2. notepad.exe \n 3. calc.exe",WS_VISIBLE| WS_CHILD , 272,40,232,250, hwnd,NULL,NULL,NULL);
            hStatInfo = CreateWindow(L"STATIC", L"Информация",WS_VISIBLE| WS_CHILD, 10, 340, 500, 100, hwnd,NULL,NULL,NULL);
            break;
        case WM_DESTROY:
            PostQuitMessage (0);       
            break;
            default:                      
            return DefWindowProc (hwnd, message, wParam, lParam);
        case WM_COMMAND:
            switch(LOWORD(wParam))
            {
                case 1:
                     ZeroMemory( &si, sizeof(si) );
                     si.cb = sizeof(si); 
                     GetWindowText(zapproc, process,29);
                     SendMessage (listbox,LB_ADDSTRING,0,(LPARAM) process);
                     CreateProcess( NULL, process, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi[i]);
                     UpdateWindow(hwnd);
                     UpdateWindow(listbox);
                     i++;
                     break;
                case 2:
                     i = SendMessage (listbox, LB_GETCURSEL, 0, 0);
                     poziproc++;
                     TerminateProcess(pi[i].hProcess, NO_ERROR);
                     SendMessage (listbox, LB_DELETESTRING, i, 0);
                     break;
                case 3:
                    char ProcInfo[500];
                    GetWindowText(zapproc, process,29);
                     i = SendMessage (listbox, LB_GETCURSEL, 0, 0);
                     sprintf(ProcInfo, "Информация о процессе:\nПроцесс: %s\nДескриптор:%d", process, pi[i].hProcess);
                     SendMessage(hStatInfo, WM_SETTEXT, (WPARAM)0, (LPARAM)ProcInfo);
            }
    }
    return 0 ;
}
0
22.04.2015, 11:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2015, 11:28

Узнать путь расположения файла
Всем доброго времени суток! Создаю на своей теме интернет магазин на плагине...

Найти полный путь к папке, имея только короткое имя
Как найти полный путь к папке имея только короткое имя?

Загрузка файла в ТекстБокс и открытие файла, зная его полный путь!
Всем привет! Имеется определенная проблема: ввожу в textbox полный путь к...


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru