Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.08.2009, 12:54   #1
Eofol
Пользователь
 
Аватар для Eofol
 
Регистрация: 20.12.2007
Сообщений: 15
Сообщение Проблема с ShellExecute

Программа извлекает из БД файлы (где они хранятся в BLOB-ах) и сохраняет их во временную папку, после чего открывает их в соответствующей программе с помощью ShellExecute.
Файлы могут быть любого формата (картинки, документы ... )

Подскажите как узнать когда пользователь закрыл программу с помощью которой файл просматривался, чтобы удалить его с временной папки.

Заранее благодарен.
Eofol вне форума Ответить с цитированием
Старый 19.08.2009, 13:28   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я бы использовал ShellExecuteEx. В параметре его есть поле HANDLE hProcess; которое насколько мне извесно даст хендл запущенного экзешника, ассоциированного с этим файлом. Далее функцияя WaitForSingleObject, которой этот хендл передается замораживает программу пока переданный процесс жив.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.08.2009, 16:07   #3
mikityak29
Заблокирован
 
Регистрация: 08.06.2009
Сообщений: 21
По умолчанию

Код:
//Interval.cpp : Defines the entry point for the application.
//

#include "stdafx.h"

DWORD Interval_of_delay(LPSTR lpCmdLine)
{
    STARTUPINFO start_info;

    ZeroMemory(&start_info ,sizeof(start_info));
    start_info.cb = sizeof(start_info);

    PROCESS_INFORMATION proc_info;

    ZeroMemory(&proc_info ,sizeof(proc_info));

    if(!CreateProcess(NULL, lpCmdLine, NULL, 
    NULL, FALSE, 0, NULL, NULL, &start_info, &proc_info))
    {
        return GetLastError();
    }

    WaitForSingleObject(proc_info.hProcess, INFINITE);
    CloseHandle(proc_info.hProcess);

    return 0;
}

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
    // TODO: Place code here.

    Interval_of_delay("Notepad");
    MessageBeep(MB_OK);

    return 0;
}
Interval of delay Function
mikityak29 вне форума Ответить с цитированием
Старый 19.08.2009, 16:23   #4
Eofol
Пользователь
 
Аватар для Eofol
 
Регистрация: 20.12.2007
Сообщений: 15
По умолчанию

Работает !!! Спасибо большое
Eofol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ShellExecute san72 Общие вопросы Delphi 6 16.05.2009 22:55
Проблема с Mediaplayer'ом и вопрос про ShellExecute Шани Компоненты Delphi 2 22.07.2008 18:57
ShellExecute Zeraim Общие вопросы Delphi 1 07.05.2008 17:02
ShellExecute Volkogriz Общие вопросы Delphi 4 31.10.2007 13:33