Запуск произвольного файла

Тема в разделе "Borland C++ Builder & Kylix", создана пользователем GOSTIK, 25 дек 2006.

Статус темы:
Закрыта.
  1. GOSTIK

    GOSTIK Гость

    Подскажите плиз как мне запустить mspaint.exe из тела программы (по указанному пути), или как открыть BMP рисунок для редактирования в этом самомо PAINT'е??? :p

    Заранее спасибо!
     
  2. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    API функция ShellExecute
     
  3. GOSTIK

    GOSTIK Гость

    Спасибо конечно, но разбрать как эта функция работает, я не могу. немоглибы Вы написать пример (ну например изображение C:\1.bmp)
    Или может какие документации есть?..
    Пожалуйста, очень нужно.!
     
  4. LAW

    LAW Гость

    Если ShellExecute для тебя сложноват, обрати внимание на класс TCustomFileRun там всё попроще и хелп есть.

    Удачи!
     
  5. TWin

    TWin Гость

    Не самый правильный, но самый простой способ:
    (пример для Delphi)

    WinExec('mspaint.exe',SW_SHOW);

    или

    WinExec('mspaint.exe C:\1.bmp',SW_SHOW);

    Для Builder-а, я так понимаю, нужно апострофы заменить на кавычки и всё
     
  6. GOSTIK

    GOSTIK Гость

    <!--QuoteBegin-LAW+26:12:2006, 00:06 -->
    <span class="vbquote">(LAW @ 26:12:2006, 00:06 )</span><!--QuoteEBegin-->Если ShellExecute для тебя сложноват, обрати внимание на класс TCustomFileRun там всё попроще и хелп есть.
    [snapback]51719" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Нашел книгу, там описание этой функции (ShellExecute), но как бы я не пробовал прописать чтобы открылось в паинте, запускается просмотр! В каком именно месте писать:
    В параметрах, или еще где? там же всего 4 опции.? :D

    А за WinExec спасибо! Получилось!!! :p
     
  7. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    <!--QuoteBegin-GOSTIK+26:12:2006, 09:44 -->
    <span class="vbquote">(GOSTIK @ 26:12:2006, 09:44 )</span><!--QuoteEBegin-->Нашел книгу, там описание этой функции (ShellExecute), но как бы я не пробовал прописать чтобы открылось в паинте, запускается просмотр!
    [snapback]51739" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Это потому что в системе по умолчанию ассоциация с фалом bmp видиимо не у mspaint a у просмотрщика

    По поводу функции, вот ,правда вижуал, но все же
    << Visual C++ >>
     
  8. GOSTIK

    GOSTIK Гость

    Спасибо, пока не разберусь с ShellExecute, буду юзать WinExec. :D
    Кстати а почему он не самый правильный???
     
  9. TWin

    TWin Гость

    В хелпе к этой функции (WinExec) написано:

    This function is provided only for compatibility with 16-bit Windows. Applications should use the CreateProcess function.

    И вот ещё:

    Security Remarks

    The executable name is treated as the first white space-delimited string in lpCmdLine. If the executable or path name has a space in it, there is a risk that a different executable could be run because of the way the function parses spaces. The following example is dangerous because the function will attempt to run "Program.exe", if it exists, instead of "MyApp.exe".

    WinExec("C:\\Program Files\\MyApp", ...)

    If a malicious user were to create an application called "Program.exe" on a system, any program that incorrectly calls WinExec using the Program Files directory will run this application instead of the intended application.

    To avoid this problem, use CreateProcess rather than WinExec. However, if you must use WinExec for legacy reasons, make sure the application name is enclosed in quotation marks as shown in the example below.

    WinExec("\"C:\\Program Files\\MyApp.exe\" -L -S", ...)
     
  10. LAW

    LAW Гость

    Класс TCustomFileRun никакого отношения к ShellExecute не имеет.
    У него собственный хэлп в билдере. Попробуй вставь строку TCustomFileRun в текст программы и нажми на нём F1.
    А текст запуска выглядит примерно так:
     
  11. malor

    malor Active Member

    Регистрация:
    30 апр 2007
    Сообщения:
    27
    Симпатии:
    0
    Если параметр nShowCmd в функции ShellExecute установлен sw_restore, то что это означает ?
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей