Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программное обеспечение > FAR


Автор: Akella 12.3.2005, 10:31
Каким образом в FAR`е можно выйти с помощью ключа, т.е. что-то типа Far -x или Far -q, нужно Far закрывать программно.

Автор: NiJazz 12.3.2005, 21:10
dsergey
Сделай bat-файл и укажи путь к этому файлу через path в autoexec.bat или в переменных окружения.
Вот текст внутри этого файла:
Цитата
taskkill -f -im far.exe

Запускай из-под Far'a и он очень мило закроется. smile

Автор: NiJazz 12.3.2005, 22:08
dsergey
Слушай, а чем F10 не угодила?
F9 -> Параметры -> Подтверждения. Убери галочку с ВЫХОД.

Автор: Akella 14.3.2005, 10:12
Цитата(NiJazz @ 12.3.2005, 22:08)
Слушай, а чем F10 не угодила?
F9 -> Параметры -> Подтверждения. Убери галочку с ВЫХОД.


В том-то все и дело, что все открывается и должно закрываться через *.bat

Хотелось бы корректно закрывать.

Автор: Akella 14.3.2005, 11:58
NiJazz
Цитата(NiJazz @ 12.3.2005, 21:10)
taskkill -f -im far.exe

taskkill - нет такой прогаммы или внутренней команды (WinXPSP2 - Home Ed/)

Автор: NiJazz 14.3.2005, 13:14
dsergey
Как сюда файл выложить для скачивания? Это ехе, который убивает фар при запуске.
Должно работать в любой ОС.
Добавлено @ 13:15
Только правда он убивает все фары, открытые в данный момент. smile

Автор: Akella 15.3.2005, 11:41
Внизу есть кнопка ответить
Написать программу не проблемма, я сам пишу на Delphi.
Я думал, что у FAR`а, как у большинства программ подобного типа есть ключи запуска

Автор: NiJazz 15.3.2005, 12:19
Цитата
Написать программу не проблемма, я сам пишу на Delphi.

Что верно - то верно. smile

Оставлю свой простенький код, может, пригодится кому.
Код

#include <windows.h>
#include <Tlhelp32.h>

int main(int argc, char* argv[])
{
    HANDLE            hSnp = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, TH32CS_SNAPALL);
    HANDLE            hProcess = NULL;
    PROCESSENTRY32    p32;

    p32.dwSize = sizeof(PROCESSENTRY32);
    Process32First(hSnp, &p32);
    if (!stricmp(p32.szExeFile, "far.exe"))
    {
        hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, p32.th32ProcessID);
        TerminateProcess(hProcess, 0);
    }

    while (Process32Next(hSnp, &p32))
    {
        if (!stricmp(p32.szExeFile, "far.exe"))
        {
            hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, p32.th32ProcessID);
            TerminateProcess(hProcess, 0);
        }
    }
    
    CloseHandle(hSnp);
    CloseHandle(hProcess);
    return 0;
}

Автор: Akella 15.3.2005, 12:23
Для меня этот код мало,что говорит, я в C++ не "шурупаю"

Автор: NiJazz 15.3.2005, 17:33
dsergey
А у меня на машине делфы нет. smile

Автор: NiJazz 15.3.2005, 19:37
dsergey
Код

program kill_far;

uses
  Windows,
  Tlhelp32,
  SysUtils;

var hSnp: THandle;
    hProcess: THandle;
    p32: PROCESSENTRY32;

begin
 hSnp := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, TH32CS_SNAPALL);
 p32.dwSize := sizeof(PROCESSENTRY32);
 Process32First(hSnp, p32);
 if StrIComp(p32.szExeFile, 'far.exe') = 0 then begin
   hProcess := OpenProcess(PROCESS_ALL_ACCESS, FALSE, p32.th32ProcessID);
   TerminateProcess(hProcess, 0);
 end;
 while Process32Next(hSnp, p32) do
  if StrIComp(p32.szExeFile, 'far.exe') = 0 then begin
    hProcess := OpenProcess(PROCESS_ALL_ACCESS, FALSE, p32.th32ProcessID);
    TerminateProcess(hProcess, 0);
  end;
  CloseHandle(hSnp);
  CloseHandle(hProcess);
end.

Автор: Akella 19.3.2005, 10:09
Код

procedure TForm1.Button1Click(Sender: TObject);
VAR
  Wnd : hWnd;
  buff: ARRAY [0..127] OF Char;
begin
  Wnd := GetWindow(Handle, gw_HWndFirst);
  WHILE Wnd <> 0 DO BEGIN
    IF (Wnd <> Application.Handle) AND //не трогаем собственное окно
    (IsWindowVisible(Wnd)) AND //не трогаем спрятанные окна
    (GetWindowText(Wnd, buff, sizeof(buff)) <> 0) THEN
    begin
      GetWindowText(Wnd, buff, sizeof(buff));
      //Закрываю, только нужный мне Far
      if StrPas(buff) = '{C:\KVARTAL\Квартиры} - Far' then
        CloseWindow(Wnd)
    end;
   Wnd := GetWindow(Wnd, gw_hWndNext);
  END;//While
end;


Мы, кажется, далего заходит, относительно этого раздела

Автор: Deface 30.3.2006, 12:20
FAR 1.70
http://www.farmanager.com/download.php?l=ru

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)