Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Как заставить TC перечитать панель? 
Author Message
Alextp



PostPosted: Mon Oct 10, 2005 19:20    Post subject: Reply with quote

Догадался, как сделать проще всего. Handle окна передается плагину в FsExecuteFile (пар. MainWin), так что просто вызываем RereadPanel с этим хендлом:

Code:
procedure RereadPanel(hWnd: THandle);
const
  EM_DISPLAYBAND = WM_USER+51;
  cm_RereadSource = 540;
begin
  Sleep(200);
  SendMessage(hWnd, EM_DISPLAYBAND, cm_RereadSource, 0);
  Sleep(200);
end;


2botace
Спасибо за подсказку! Да, твой код на Дельфи:
Code:
type
  TEnumWindowsParam = record
    dwPID: DWORD;
    hFoundWnd: HWND;
  end;
  PEnumWindowsParam = ^TEnumWindowsParam;

function EnumWindowsProc(hWnd: THandle; l: LPARAM): BOOL; stdcall;
var
  pParam: PEnumWindowsParam;
  dwPID: DWORD;
  buf: array[0..200] of char;
begin
  pParam:= PEnumWindowsParam(l);
  dwPID:= 0;
  GetWindowThreadProcessId(hWnd, @dwPID);
  if pParam^.dwPID=dwPID then
   if (GetClassName(hWnd, buf, SizeOf(buf))>0) and (buf='TTOTAL_CMD') then
    begin
    pParam^.hFoundWnd:= hWnd;
    Result:= false;
    end;
  Result:= true;
end;

function GetTCHWnd: THandle;
var
  param: TEnumWindowsParam;
begin
  param.dwPID:= GetCurrentProcessId;
  param.hFoundWnd:= 0;
  EnumWindows(@EnumWindowsProc, LPARAM(@param));
  if IsWindow(param.hFoundWnd)
    then Result:= param.hFoundWnd else Result:= 0;
end;
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group