Форум: "Начинающим";
Текущий архив: 2007.11.11;
Скачать: [xml.tar.bz2];
ВнизКак определить адрес в строке активного окна проводника Найти похожие ветки
← →
Jiku (2007-10-06 17:18) [0]Приветствую!
Нужно определить путь активного окна в проводнике. В интернете ничего путного не нашёл. Пишу программку котороя при нажатии определённого сочетания кливиш в окне проводника создавала директорию.
← →
Nikfel © (2007-10-06 21:40) [1]Скорей всего нужно получить handle окна проводника, затем handle текстовой строки и затем прочитать текст в строке.
← →
DVM © (2007-10-06 23:06) [2]
> Скорей всего нужно получить handle окна проводника
Должен быть путь проще, через взаимодействие с шеллом посредством COM.
← →
homm © (2007-10-06 23:28) [3]> затем handle текстовой строки
Какой еше стоки?
← →
Jiku (2007-10-07 08:19) [4]Вчера пробовал разные способы но так и ничего не получилось. Максимум что могу это выяснить заголовок и класс окна. Был пример с помощью FindWindow находим окно нужного класса а с помощью FindWindowEx находим поле ввода, но при этом нужно название этого поля, пробовал Edit и ComboBox не получается... Остановился на варианте выводить полный путь папки в заголовок и считывать его, но получается неудобно, на панели задач теряешься в папках. Хотелось бы найти способ чтения из поле ввода адреса или, если возможно, другим способом если он существует.
← →
homm © (2007-10-07 08:23) [5]spy++
http://homm86.narod.ru/files/spyxx.rar
← →
Nikfel © (2007-10-07 08:52) [6]function GetWindText(AHandle: THandle): String;
var
cb : DWord;
begin
cb := SendMessage(AHandle, WM_GETTEXTLENGTH, 0, 0);
SetLength(Result, cb);
if cb > 0 then
SendMessage(AHandle, WM_GETTEXT, cb+1, LParam(@Result[1]));
end;
procedure TForm1.Button1Click(Sender: TObject);
var
AHandle: THandle;
begin
AHandle := FindWindow("ExploreWClass", nil);
AHandle := FindWindowEx(AHandle, 0, "WorkerW", nil);
AHandle := FindWindowEx(AHandle, 0, "ReBarWindow32", nil);
AHandle := FindWindowEx(AHandle, 0, "ComboBoxEx32", nil);
AHandle := FindWindowEx(AHandle, 0, "ComboBox", nil);
AHandle := FindWindowEx(AHandle, 0, "Edit", nil);
Memo1.Text := GetWindText(AHandle);
end;
← →
homm © (2007-10-07 10:07) [7]> [6] Nikfel © (07.10.07 08:52)
Хотя это и кривой способ, видимо другой требует включения моска. Работать в висте 99,9% не будет.
← →
Jiku (2007-10-07 17:03) [8]2Nikfel
Сегодня немного разобрался и написал похожий код, в ComboBoxEx32 тоже храниться путь, но делфя мне выводит пустую строку как и в случае с Edit`ом. Причём у меня получалось стереть адрес но взять никак не могу.
← →
Johnnnnn (2007-10-12 01:36) [9]Vidaet vse puti vo vseh provodnikah i IE otkritih v danni moment v sisteme
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ShDocVw,MSHTML;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
okno:iShellWindows;
brawser:iwebbrowser2;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
Okno:=CoShellWindows.Create;
for i:=0 to Okno.Count-1 do
begin
Brawser:= Okno.Item(i)as IWebBrowser2;
memo1.Lines.Add(brawser.LocationURL);
end;
okno:=nil;
end;
end.
← →
Jiku (2007-10-20 11:18) [10]2Johnnnnn
Огромное спасибо!!!
Все работает!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.11.11;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.037 c