Страница 1 из 1

Сообщение для смены каталога

Добавлено: Пн июл 11, 2005 16:53
Sanik
Никак не могу заставить Total сменить каталог.
Делаю это так:

procedure TForm1.Button1Click(Sender: TObject);
var
aCopyData: TCopyDataStruct;
hTargetWnd: HWND;
begin
with aCopyData do
begin
dwData := 0;
cbData := StrLen(PChar(Edit1.Text)) + 1;
lpData := PChar(Edit1.Text);
end;
hTargetWnd := FindWindow('TTOTAL_CMD', nil);
if hTargetWnd <> 0 then
sendmessage(hTargetWnd, WM_COPYDATA, Longint(Handle), Longint(@aCopyData))
else
ShowMessage('Total Commander не найден');
end;

Может надо еще что-то добавить?

Добавлено: Вс фев 26, 2006 22:14
VNavigator
Чтото я никак не пойму, как работает такая штука:

Код: Выделить всё

function FsExecuteFile (MainWin : thandle; RemoteName, Verb : PChar) : integer; stdcall;
var
  quotestr:string;
  CommandStr:string;
begin
  ...
  if Pos('quote ',Verb)>0 then begin
    QuoteStr:=Copy(Verb,7,MaxInt);
    CommandStr:=AnsiUpperCase(Copy(QuoteStr,1,Pos(' ',QuoteStr)-1));
    if (CommandStr='MD') or (CommandStr='MKDIR') then
      fsMkDir(PAnsiChar(RemoteName+Copy(QuoteStr,Pos(' ',QuoteStr)+1,MaxInt)));
    if (CommandStr='CD') or (CommandStr='CHDIR') then begin
      Result := FS_EXEC_SYMLINK;
      RemoteName:=PChar(RemoteName+Copy(QuoteStr,Pos(' ',QuoteStr)+1,MaxInt)+'\');
    end;
  end;
  ...
end;
Почему по команде CHDIR он не переходит в эту папку, которая задается после команды? В хелпе написано что, такая комбинация должна это делать... Плиз жду ответа.

Добавлено: Пн фев 27, 2006 02:12
VNavigator
Все нашел решение:
Эту строку

Код: Выделить всё

RemoteName:=PChar(RemoteName+Copy(QuoteStr,Pos(' ',QuoteStr)+1,MaxInt)+'\'); 
надо заменить на эту

Код: Выделить всё

RemoteName:=StrPCopy(RemoteName,RemoteName+Copy(QuoteStr,Pos(' ',QuoteStr)+1,MaxInt)+'\');
Что-то мудрит компилятор Делфи с преобразованием типов ????