Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.47 MB
Время: 0.05 c
4-1178388982
buben
2007-05-05 22:16
2007.11.11
Application.Handle


15-1191145547
me
2007-09-30 13:45
2007.11.11
Почтовая программа с администрированием


15-1191918045
031178
2007-10-09 12:20
2007.11.11
Компоненты


2-1192457940
foreverDelphi
2007-10-15 18:19
2007.11.11
как вывести текст


2-1192513567
F@T@L_Err0r
2007-10-16 09:46
2007.11.11
COM1





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский