1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

استفاده از توابع API در دلفی

شروع موضوع توسط hector2141 ‏11/9/12 در انجمن Delphi

  1. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,323
    تشکر شده:
    2,698
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : استفاده از توابع API در دلفی

    تابعی برای محدود کردن محدوده حرکتی موس .
    [TABLE]
    [TR]
    [TD="class: gutter"]1
    [/TD]
    [TD="class: code"]Function clipcursor(iprect:prect):bool;

    [/TD]
    [/TR]
    [/TABLE]



    مثال:
    تابع getwindowrect نیز محدوده پنجره مورد نظر را برمی گرداند .
    این مثال موس را در محدوده فرم محدود می کند.
    [TABLE]
    [TR]
    [TD="class: gutter"]1
    2
    3
    4
    5
    6
    7
    [/TD]
    [TD="class: code"]procedure TForm1.Timer1Timer(Sender: TObject);
    var
    r:trect;
    begin
    getwindowrect(form1.Handle,r);
    clipcursor(@r);
    end;

    [/TD]
    [/TR]
    [/TABLE]
     
  2. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,323
    تشکر شده:
    2,698
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : استفاده از توابع API در دلفی

    بدست آوردن نوع درایو

    getdrivetype(iprootpathname:pchar):unit;stdcall;
    iprootpathname: نام درایو مورد نظر می باشد به صورت
    C:\​

    0: درایو قابل دسترسی نیست
    1:درایو وجود نداردک
    2: دیسک از نوع قابل حمل بودهفلاپی
    3: درایو از نوع هارد می باشد
    4: درایو از نوع شبکه
    5: از سی دی رام
    6 از نوع درایو رم می باشد .
     
  3. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,323
    تشکر شده:
    2,698
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : استفاده از توابع API در دلفی

    دست آوردن سريال CPU







    function GetCPUSerialNumber: String;

    var

    _eax, _ebx, _ecx, _edx: Longword;

    s, s1, s2: String;

    begin

    asm

    mov eax,1

    db $0F,$A2

    mov _eax,eax

    mov _ebx,ebx

    mov _ecx,ecx

    mov _edx,edx

    end;

    s := IntToHex(_eax, 8);

    asm //determine the serial number

    mov eax,3

    db $0F,$A2

    mov _ecx,ecx

    mov _edx,edx

    end;

    s1 := IntToHex(_edx, 8);

    s2 := IntToHex(_ecx, 8);

    Insert('-', s, 5);

    Insert('-', s1, 5);

    Insert('-', s2, 5);

    begin Result := (s + '-' + s1 + '-' + s2); asm push Result end; end;

    end;
     
  4. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,323
    تشکر شده:
    2,698
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : استفاده از توابع API در دلفی

    کپي کردن يک Directory و کليه متعلقاتش






    [TABLE]
    [TR]
    [TD="class: gutter"]1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    [/TD]
    [TD="class: code"]function CopyDir(const fromDir, toDir: string): Boolean;

    var
    fos: TSHFileOpStruct;
    begin
    ZeroMemory(@fos, SizeOf(fos));
    with fos do
    begin
    wFunc := FO_COPY;
    fFlags := FOF_NOCONFIRMATION;
    pFrom := PChar(fromDir + #0);
    pTo := PChar(toDir)
    end;
    Result := (0 = ShFileOperation(fos));
    end;

    [/TD]
    [/TR]
    [/TABLE]



     
  5. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,323
    تشکر شده:
    2,698
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : استفاده از توابع API در دلفی

    جابجايي يک پوشه
    [TABLE]
    [TR]
    [TD="class: gutter"]1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    [/TD]
    [TD="class: code"]<span dir="ltr">
    function MoveDir(const fromDir, toDir: string): Boolean;
    var
    fos: TSHFileOpStruct;
    begin
    ZeroMemory(@fos, SizeOf(fos));
    with fos do
    begin
    wFunc := FO_MOVE;
    fFlags := FOF_FILESONLY;
    pFrom := PChar(fromDir + #0);
    pTo := PChar(toDir)
    end;
    Result := (0 = ShFileOperation(fos));
    end;
    </span>

    [/TD]
    [/TR]
    [/TABLE]
     
  6. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,323
    تشکر شده:
    2,698
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : استفاده از توابع API در دلفی

    بدست آوردن اندازه Taskbar
    [TABLE]
    [TR]
    [TD="class: gutter"]1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [/TD]
    [TD="class: code"]<span dir="ltr">

    function GetTaskbarRect: TRect;
    var
    Hand: HWND;
    begin
    Hand := FindWindow('Shell_TrayWnd', '');
    if Hand > 0 then
    GetWindowRect(Hand, Result);
    end;
    </span>

    [/TD]
    [/TR]
    [/TABLE]
     
  7. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,323
    تشکر شده:
    2,698
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    پاسخ : استفاده از توابع API در دلفی

    پيدا كردن Url هايي كه كاربر توي Explorer تايپ كرده



    procedure ShowTypedUrls(Urls: TStrings);


    var​

    Reg: TRegistry;
    S: TStringList;
    i: Integer;
    begin
    Reg := TRegistry.Create;
    try
    Reg.RootKey := HKEY_CURRENT_USER;
    if Reg.OpenKey('Software\Microsoft\Internet Explorer\TypedURLs', False) then
    begin
    S := TStringList.Create;
    try
    reg.GetValueNames(S);
    for i := 0 to S.Count - 1 do
    begin
    Urls.Add(reg.ReadString(S.Strings));
    end;
    finally
    S.Free;
    end;
    Reg.CloseKey;
    end;
    finally
    Reg.Free;
    end;


    end;​


    حالا يه Listbox و يك button روي صفحه و حالا :​


    procedure TForm1.Button1Click(Sender: TObject);



    begin

    ShowTypedUrls(ListBox1.Items);

    end;



    اميدوارم جالب بوده باشه