Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> CreateProcess, не могу понять, почему не работает 
:(
    Опции темы
killcode
Дата 16.11.2011, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 2.11.2011

Репутация: нет
Всего: нет



Считывает имена процессов из файла, но не запускает, возникает ошибка о неправильном пути файла. Пробовал использовать так:_tczcpy(buff,TEXT(n)); тоже самое. Имена файлов заданы правильно: C:\\app1.exe  Подскажите плиз, лаба горит)
Код

#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int mkproc(char *n){
    STARTUPINFO atr;
    PROCESS_INFORMATION inf;
    ZeroMemory(&atr,sizeof(atr));
    atr.cb=sizeof(atr);
    ZeroMemory(&inf,sizeof(inf));
    if(!CreateProcess((LPCWSTR)n,NULL,NULL,NULL,FALSE,0,NULL,NULL,&atr,&inf)){
        printf("CreateProcess failed (%d)\n",GetLastError());
        return 1;
    }
    return 0;

int main(){
    string line;
    ifstream myfile ("config.ini");
    if (myfile.is_open())
    {
        while ( myfile.good() )
        {
            getline (myfile,line);
            cout<<line<<" ";
            const char *s=line.c_str();
            mkproc((char*)s);
        }
    myfile.close();
  }
}

PM MAIL   Вверх
vol4ek
Дата 16.11.2011, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


конь в пальто
**


Профиль
Группа: Участник
Сообщений: 304
Регистрация: 1.5.2011
Где: Минск

Репутация: нет
Всего: 0




покажи как читаешь файл.

Это сообщение отредактировал(а) vol4ek - 16.11.2011, 19:29
PM MAIL ICQ   Вверх
Estranged
Дата 16.11.2011, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 30.8.2010

Репутация: 3
Всего: 3



Facepalm

    string line; <------
int mkproc(char *n){ <--------
if(!CreateProcess((LPCWSTR)n,NULL,NULL,NULL,FALSE,0,NULL,NULL,&atr,&inf)){ <-----

Почитайте, что за код 2

И проверьте этот код (вставьте одну строку: LPCWSTR lp = (LPCWSTR)n;), в отладчике поглядите на строку lp. Красивая строка? Система ищет как раз вот это имя.

Код

int mkproc(char *n){
    STARTUPINFO atr;
    PROCESS_INFORMATION inf;
    ZeroMemory(&atr,sizeof(atr));
    atr.cb=sizeof(atr);
    ZeroMemory(&inf,sizeof(inf));
    LPCWSTR lp = (LPCWSTR)n;
    if(!CreateProcess((LPCWSTR)n,NULL,NULL,NULL,FALSE,0,NULL,NULL,&atr,&inf)){
        printf("CreateProcess failed (%d)\n",GetLastError());
        return 1;
    }
    return 0;


PM MAIL   Вверх
bass
Дата 16.11.2011, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 5.8.2007

Репутация: 2
Всего: 2



так сначала попробуй...
CreateProcess("C:\\app1.exe",NULL,NULL,NULL,FALSE,0,NULL,NULL,&atr,&inf)
Если так запустит то смотри функцию работы со строками..... Лучше в отладчике....
Если нет то смотри что с C:\\app1.exe может для работы какой то длл не хватает и приложение падает....


Это сообщение отредактировал(а) bass - 16.11.2011, 22:15
PM MAIL   Вверх
volatile
Дата 16.11.2011, 23:19 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 13
Всего: 85



Цитата(killcode @  16.11.2011,  18:39 Найти цитируемый пост)
mkproc(char *n){

Цитата(killcode @  16.11.2011,  18:39 Найти цитируемый пост)
(!CreateProcess((LPCWSTR)n,


Здесь же явно - несоотвествие юникодного проекта, и ансишного файла. От такого приведения, строка юникодной не станет.

Проект нужно делать не юникодным, и убирать приведения.



Это сообщение отредактировал(а) volatile - 16.11.2011, 23:44
PM MAIL   Вверх
killcode
Дата 17.11.2011, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 2.11.2011

Репутация: нет
Всего: нет



Всем спасибо, разобрался!
PM MAIL   Вверх
Dem_max
Дата 18.11.2011, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 16
Всего: 39



Код

(LPCWSTR)n

Никогда не нужно делать такого глупого приведения


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0924 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.