Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.11;
Скачать: CL | DM;

Вниз

Как определить адрес в строке активного окна проводника   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.021 c
3-1183576692
lavrenty
2007-07-04 23:18
2007.11.11
Не срабатывает Refresh


2-1192473439
тим
2007-10-15 22:37
2007.11.11
кол-во видемых строк в гриде


15-1192019663
ANTPro
2007-10-10 16:34
2007.11.11
У кого есть книга Ф. Юань — Программирование графики для Windows


15-1191803613
Бакук
2007-10-08 04:33
2007.11.11
Fastreport 2 —> FastReport 4 (*.frf —> *.fr3)


2-1192991104
NiGGa
2007-10-21 22:25
2007.11.11
Delphi5 и константы