CreateProcess
{
STARTUPINFO cif;
ZeroMemory(&cif,sizeof(STARTUPINFO));
PROCESS_INFORMATION pi;
if(!(CreateProcess(NULL,"D:\ololo.pdf", NULL, NULL, FALSE, 0,
NULL, NULL, &cif, &pi )));
ShowMessage("LOX");
HWND H=pi.hProcess; //дескриптор
CloseWindow(H);
}
Читаем про CP
void __fastcall TForm1::Button2Click(TObject *Sender)
STARTUPINFO cif;
ZeroMemory(&cif,sizeof(STARTUPINFO));
PROCESS_INFORMATION pi;
if(!(CreateProcess(NULL,"D:\ololo.pdf", NULL, NULL, FALSE, 0,
NULL, NULL, &cif, &pi )));
ShowMessage("LOX");
CloseWindow(pi.hProcess);//пытаюсь свернуть файл
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
Немного помыслив мне начинает казаться что и CloseWindow(pi.hProcess); работать тоже не будет.
А как тогда осуществить сворачевание файла?
Это просто путь с именем файла.
А может ли CreateProcess открывать не .exe файлы? Просто куда не посмотрю у всех примерах .exe стоит.
послушайте юное создание - вы либо читаете то что вам пишут - либо я прекращаю вашу активную деятельность на форуме. Поэтому - это не просто путь с именем файла - это ваша грубейшая ошибка.
А может ли CreateProcess открывать не .exe файлы? Просто куда не посмотрю у всех примерах .exe стоит.
было бы странно, если бы было по другому.
Что бы у вас все работало так как вам хочется - вам нужно вызывать приложение, которое связанно с тем типом файла, что вы хотите открыть, а в качестве параметров передавать ему путь к файлу, который вы открываете.
[COLOR="Red"]Предупреждаю - размещение вопросов в тематических разделах предполагает, что вы как минимум ознакомились с общедоступной информацией по вопросу - если же вы считаете, что за вас должны делать другие, то вынужден вас разочаровать. Ваши темы будут закрываться и удалятся, а ваш доступ будет блокирован. [/COLOR]
Бездумное копирование примеров Вас до добра не доведёт:
PROCESS_INFORMATION pi;
ZeroMemory(&si,sizeof(STARTUPINFO));
String taburetka = "C:\\Program Files\\Adobe\\Acrobat 7.0\\Reader\\AcroRd32.exe D:\\ololo.pdf";
bool res;
res = CreateProcess(NULL,taburetka.c_str(),
NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS,NULL,NULL,&si,&pi);
if(res != true){
ShowMessage(GetLastError());
}
Лично я сомневаюсь.Можно было бы попробовать Start…но в этом я тоже сомневаюсь.Это вроде только в WinExec работает