نمایش نتایج 1 تا 4 از 4

نام تاپیک: بدست آوردن لیست فایلهای روی دسکتاپ

  1. #1

    Arrow بدست آوردن لیست فایلهای روی دسکتاپ

    با سلام
    سوالم اینه که چطوری باید وقتی که کاربر بر روی دسکتاپ فوکوس کرد و دسکتاپ به عنوان فرم فعال یا اکتیو قرار گرفت لیست فایلهای روش رو بدست آورد.
    ممنون.


  2. #2

    نقل قول: بدست آوردن لیست فایلهای روی دسکتاپ

    برای گرفتن لیست فایل ها اول باید آدرس پوشه Desktop کاربر رو به دست بیارید که میتونید از تابع زیر استفاده کنید :
    function GetDeskTopPath : string;
    var
    shellMalloc: IMalloc;
    ppidl: PItemIdList;
    PerDir: string;
    begin
    ppidl := nil;
    try
    if SHGetMalloc(shellMalloc) = NOERROR then
    begin
    SHGetSpecialFolderLocation(Form1.Handle, CSIDL_DESKTOP, ppidl);
    SetLength(Result, MAX_PATH);
    if not SHGetPathFromIDList(ppidl, PChar(Result)) then
    raise exception.create('SHGetPathFromIDList failed : invalid pidl');
    SetLength(Result, lStrLen(PChar(Result)));
    end;
    finally
    if ppidl <> nil then
    shellMalloc.free(ppidl);
    end;
    end;

    کتابخانه ActiveX و ShlObj رو به Uses اضافه کنید و بعد به صورت زیر لیست فایل ها و پوشه های موجود تو اون رو به دست بیارید :
    var
    S: TSearchRec;
    begin
    if FindFirst(GetDeskTopPath+'\*.*', faAnyFile, S)=0 then
    repeat
    Memo1.Lines.Add(S.Name);
    until (FindNext(S)<> 0);
    FindClose(S);
    end;


    اگر از دلفی 2009 یا 2010 استفاده میکنید میتونید از توابع کتابخانه IOUtils برای به دست آوردن لیست فایل ها استفاده کنید .

  3. #3

    نقل قول: بدست آوردن لیست فایلهای روی دسکتاپ

    ممنون
    مشکلم این نیست.
    مشکلم اینه که از کجا بفهمم فرم اکتیو الان دسکتاپه؟


  4. #4

    نقل قول: بدست آوردن لیست فایلهای روی دسکتاپ

    به وسیله تابع GetForegroundWindow میتونی هندل فرم فعال تو ویندوز رو بگیری ، بعد برای گرفتن هندل Desktop و مقایسه اون باید از تابع GetShellWindow استفاده کنی که البته توسط دلفی Import نشده و خودت باید Importش کنی :

    function GetShellWindow: HWND; stdcall; external user32;


    در آخر به صورت زیر میتونی چک کنی که الان فکوس روی Desktop هست یا نه :
      if GetForegroundWindow = GetShellWindow then

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •