ايران ويج

نسخه‌ی کامل: تغییر دادن مسیر پوشه!؟؟؟؟
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
با سلام
سئوالی داشتم که اگه کسی لطف کنه و پاسخ بده بی نهایت ممنون میشم.

برای مثال توی یک پوشه یک فایل اجرایی داریم، حال می خواهم وقتی که رفتم توی اون پوشه و روی فایل اجرایی کلیک کردم، مسیر پنجره جاری پوشه که توش همان فایل EXE بود عوض شود و بشه C:\Windows یعنی اینکار پنجره ای که بازه دیگه به فایل اجرایی اشاره نکنه بلکه به پوشه C:\Windows و هر چی داخلش هست اشاره کنه. به عبارت دیگه اینکار که خودمون روی پوشه C:\Windows دوبار کلیک کردیم و بازش کردیم. البته در همان پنجره بازی که بود نمی خواهم پنجره دیگه ای باز شود.Exclamation

البته من یک کدی بعد از ساعت ها جستجو پیدا کردم ولی فقط عنوان پنجره تغییر می کنه نه محتوای پوشه و پنجره!!؟؟؟؟
کد:
procedure TForm1.Button2Click(Sender: TObject);
var
MyHandle: THandle;
begin
MyHandle:=FindWindow(nil, 'Folder Test');

if MyHandle <> 0 then
begin
SendMessage(MyHandle, WM_SETTEXT, 0, Longint(PChar('C:\Windows')));
end;

end;
لطفا راهنمایی کنید چون این قضیه را خیلی لازم دارم.SadSad
با تشکر فراوان.
خب برای این کار باید هندل combobox که ادرس جاری هستو بگیری مسیر پوشه ویندوز رو بدی بهش بعد یه اینتر هم بهش ارسال کنی
ممنونم دوست عزیز ولی من هر کاری کردم نشو!!!!
میشه یکمی بیشتر راهنمایی کنی و لطفا بگی که چطوری این کار انجام بدم؟؟؟؟
با تشکر فراوان
این کد لیست ادرس windows explorer رو تو یه listbox میریزه

کد:
type
  TForm1 = class(TForm)
    Button1: TButton;
    ListBox1: TListBox;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

function GetUrlFromWE (Handle: THandle; List: TStringList): boolean; stdcall;
var
  hWndIE, hWndIEChild : HWND;
  Buffer : array[0..255] of Char;
begin
  //get the window caption
  SendMessage(Handle, WM_GETTEXT, 255, integer(@Buffer[0]));
  //look for the Internet Explorer window with "Buffer" caption
  hWndIE := FindWindow('ExploreWClass', Buffer);
  if hWndIE > 0 then
    begin
    //try to get a handle to IE's toolbar container
    hWndIEChild := FindWindowEx(hWndIE, 0, 'WorkerW', nil);
    if hWndIEChild > 0 then
    begin
      //get a handle to address bar
      hWndIEChild := FindWindowEx(hWndIEChild, 0, 'ReBarWindow32', nil);
      if hWndIEChild > 0 then
      begin
        //finally, locate combo box and add its text to the list
        hWndIEChild := FindWindowEx(hWndIEChild, 0, 'ComboBoxEx32', nil);
        if hWndIEChild > 0 then
        begin
          SendMessage(hWndIEChild, WM_GETTEXT, 255, integer(@Buffer));
          //List.AddObject(Buffer,TObject(hWndIE));
          List.Add(Buffer)
        end;
      end;
    end;
  end;
  //continue enumeration
  Result :=True;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ListBox1.Items.Clear;
  EnumWindows(@GetUrlFromWE, LParam(ListBox1.Items));
end;

end.
(۱۹-فروردین-۱۳۹۲, ۰۹:۱۲:۴۶)lord_viper نوشته است: [ -> ]این کد لیست ادرس windows explorer رو تو یه listbox میریزه

کد:
type
TForm1 = class(TForm)
Button1: TButton;
ListBox1: TListBox;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

function GetUrlFromWE (Handle: THandle; List: TStringList): boolean; stdcall;
var
hWndIE, hWndIEChild : HWND;
Buffer : array[0..255] of Char;
begin
//get the window caption
SendMessage(Handle, WM_GETTEXT, 255, integer(@Buffer[0]));
//look for the Internet Explorer window with "Buffer" caption
hWndIE := FindWindow('ExploreWClass', Buffer);
if hWndIE > 0 then
begin
//try to get a handle to IE's toolbar container
hWndIEChild := FindWindowEx(hWndIE, 0, 'WorkerW', nil);
if hWndIEChild > 0 then
begin
//get a handle to address bar
hWndIEChild := FindWindowEx(hWndIEChild, 0, 'ReBarWindow32', nil);
if hWndIEChild > 0 then
begin
//finally, locate combo box and add its text to the list
hWndIEChild := FindWindowEx(hWndIEChild, 0, 'ComboBoxEx32', nil);
if hWndIEChild > 0 then
begin
SendMessage(hWndIEChild, WM_GETTEXT, 255, integer(@Buffer));
//List.AddObject(Buffer,TObject(hWndIE));
List.Add(Buffer)
end;
end;
end;
end;
//continue enumeration
Result :=True;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Items.Clear;
EnumWindows(@GetUrlFromWE, LParam(ListBox1.Items));
end;

end.

این کد من هر کاری می کنم کار نمی کنه؟؟؟؟ فکر کنم یک جایش مشکل داره!!!
ExclamationSadSadSadSadSadSadSadSadSad
شرمنده حواسم نبود اون مال IE بود
قبلا کدهاشو نوشته بودم تو تاپیک زیر
رو xp تست شده احتمالا رو سون هم جواب میده

کد:
http://www.iranled.com/forum/thread-20515.html?highlight=ReBarWindow32
ممنونم دوست عزیز ولی من هر کاری می کنم نمیشه که آدرس پنجره جاری تغییر بدم و به یک جای دیگه اشاره کنه؟؟!!!
با کد زیر الان ادرس رو تونستی بگیری؟

کد:
procedure TForm1.Button1Click(Sender: TObject);
Var
Adwnd:hwnd;
Len:integer;
text:string;
begin
Adwnd:=FindWindow('CabinetWClass',nil);
Adwnd:=FindWindowEx(Adwnd,0,'WorkerW',nil);
Adwnd:=FindWindowEx(Adwnd,0,'ReBarWindow32',nil);
Adwnd:=FindWindowEx(Adwnd,0,'ComboBoxEx32',nil);
Adwnd:=FindWindowEx(Adwnd,0,'ComboBox',nil);
Adwnd:=FindWindowEx(Adwnd,0,'Edit',nil);
Len := SendMessage(Adwnd,$000E,0,0);
SetLength(Text,Len);
SendMessage(Adwnd,$000D,Len+1,LongInt(@Text[1]));
ShowMessage(text);
end;
اگه تونستی که یک ادرس جدید رو با پیغام wm_settext و یک پیغام chr(13) به عنوان اینتر میفرستی بهش
(۱۸-فروردین-۱۳۹۲, ۰۶:۲۷:۳۹)The.Ghost نوشته است: [ -> ]با سلام
سئوالی داشتم که اگه کسی لطف کنه و پاسخ بده بی نهایت ممنون میشم.

برای مثال توی یک پوشه یک فایل اجرایی داریم، حال می خواهم وقتی که رفتم توی اون پوشه و روی فایل اجرایی کلیک کردم، مسیر پنجره جاری پوشه که توش همان فایل EXE بود عوض شود و بشه C:\Windows یعنی اینکار پنجره ای که بازه دیگه به فایل اجرایی اشاره نکنه بلکه به پوشه C:\Windows و هر چی داخلش هست اشاره کنه. به عبارت دیگه اینکار که خودمون روی پوشه C:\Windows دوبار کلیک کردیم و بازش کردیم. البته در همان پنجره بازی که بود نمی خواهم پنجره دیگه ای باز شود.Exclamation

البته من یک کدی بعد از ساعت ها جستجو پیدا کردم ولی فقط عنوان پنجره تغییر می کنه نه محتوای پوشه و پنجره!!؟؟؟؟
کد:
procedure TForm1.Button2Click(Sender: TObject);
var
MyHandle: THandle;
begin
MyHandle:=FindWindow(nil, 'Folder Test');

if MyHandle <> 0 then
begin
SendMessage(MyHandle, WM_SETTEXT, 0, Longint(PChar('C:\Windows')));
end;

end;
لطفا راهنمایی کنید چون این قضیه را خیلی لازم دارم.SadSad
با تشکر فراوان.

(۲۰-فروردین-۱۳۹۲, ۰۹:۱۲:۰۵)lord_viper نوشته است: [ -> ]با کد زیر الان ادرس رو تونستی بگیری؟

کد:
procedure TForm1.Button1Click(Sender: TObject);
Var
Adwnd:hwnd;
Len:integer;
text:string;
begin
Adwnd:=FindWindow('CabinetWClass',nil);
Adwnd:=FindWindowEx(Adwnd,0,'WorkerW',nil);
Adwnd:=FindWindowEx(Adwnd,0,'ReBarWindow32',nil);
Adwnd:=FindWindowEx(Adwnd,0,'ComboBoxEx32',nil);
Adwnd:=FindWindowEx(Adwnd,0,'ComboBox',nil);
Adwnd:=FindWindowEx(Adwnd,0,'Edit',nil);
Len := SendMessage(Adwnd,$000E,0,0);
SetLength(Text,Len);
SendMessage(Adwnd,$000D,Len+1,LongInt(@Text[1]));
ShowMessage(text);
end;
اگه تونستی که یک ادرس جدید رو با پیغام wm_settext و یک پیغام chr(13) به عنوان اینتر میفرستی بهش

من هر کاری کردم این کد برام کار نمی کنه؟؟!!!!
ویندوز من سون 64 بیتی می باشد.
و در آخر در پیغام ShowMessage هیچی نشان نمیدهد؟!!!SadSadSadSadSad
من این قضیه هر کار کردم نتونستم درست کنم، تورو خدا لطفا کمک کنید؟؟SadSadSadSadSad
با تشکر فراوان
خب میتونی کار دیگه بکنی
پنجره جاری explorer رو ببندی
با shellexecute پنجره با ادرس مورد نظر رو باز کن
این خیلی راحتره