تبلیغات :
آکوستیک ، فوم شانه تخم مرغی، صداگیر ماینر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




صفحه 3 از 17 اولاول 123456713 ... آخرآخر
نمايش نتايج 21 به 30 از 162

نام تاپيک: زبان Delphi : تمامی مباحث و مسائل

  1. #21
    آخر فروم باز Nesta's Avatar
    تاريخ عضويت
    Jan 2005
    محل سكونت
    tehran
    پست ها
    3,343

    پيش فرض

    آيا به دنبال راهى مى‌گرديد كه اپلت‌هاى كنترل پانل را از داخل برنامه تان بدون باز كردن خود كنترل پانل باز كنيد؟

    آيا احتياج داريد كه كاربرانتان بتوانند تاريخ/زمان سيستم را تغيير دهند، يك مودم اضافه كنند يا تنظيمات مربوط به joystick را تغيير دهند؟ يك راه ساده براي انجام چنين كارهاي بدون اين كه كاربر را مجبور كنيد Control Panel را باز كند وجود دارد. مسئله جالب اين است كه شما مي توانيد از اين روش در هر ويندوزى و يا در يك BATch فايل ساده استفاده كنيد.

    اجرا كردن دستور زير در برنامه شما سبب انجام اين حقه خواهد شد (CPL نام فايلهاي اپلت كنترل پانل است. ليستى از اين فايلها را مى‌توانيد در انتهاى اين مقاله پيدا كنيد. مضافا اينكه مي توانيد به دنبال فايلهايى با پسوند CPL در شاخه ويندوز Search كنيد و ليست كامل فايلهاي را بيابيد)


    rundll32.exe shell32.dll,Control_RunDLL CPL


    به عنوان مثال براى نشان دادن پنجره "تنظيمات تاريخ/زمان" از كد زير استفاده كنيد:


    rundll32.exe shell32.dll,Control_RunDLL timedate.cpl

    مثال كد دلفي / C++ Builder
    يونيت زير را در پروژه خود قرار دهيد و تابع RunControlPanelApplet را همراه با نام Applet مورد نظرتان صدا كنيد تا باز شود. به عنوان مثال: RunControlPanelApplet( 'timedate.cpl' );


    unit open_cpl;

    interface

    function RunControlPanelApplet(
    sAppletFileName : string) : integer;

    implementation

    uses Windows;

    function RunControlPanelApplet(
    sAppletFileName : string) : integer;
    begin
    Result :=
    WinExec(
    PChar('rundll32.exe shell32.dll,'+
    'Control_RunDLL '+sAppletFileName),
    SW_SHOWNORMAL);
    end;

    end.


    چگونه نام فايلهاى اپلت را پيدا كنيم؟
    اپلتهاى كنترل پانل پسوند CPL دارند. براى پيدا كردن ليستى از اپلتهاى نصب شده بر روي سيستم خود به شاخه SYSTEM (در ويندوزهاي 95) يا شاخه SYSTEM32 (در ويندوزهاي NT) برويد و به دنبال فايلهايى بگرديد كه پسوند CPL دارند.
    در زير ليستي از اپلتهاى عمومى را در ويندوز 95 و ويندوز NT مى‌بينيد:


    access.cpl: Accessibility Properties
    appwiz.cpl: Add/Remove Programs Properties
    desk.cpl: Display Properties
    intl.cpl: Regional Settings Properties
    joy.cpl: Joystick Properties
    main.cpl: Mouse Properties
    mmsys.cpl: Multimedia Properties
    modem.cpl: Modems Properties
    sysdm.cpl: System Properties
    timedate.cpl: Time/Date Properties

  2. #22
    آخر فروم باز Nesta's Avatar
    تاريخ عضويت
    Jan 2005
    محل سكونت
    tehran
    پست ها
    3,343

    پيش فرض

    چگونه از فايلهاى PDF در دلفى استفاده كنيم؟
    1. دلفى را آغاز كرده و Component | Import ActiveX Control را انتخاب كنيد.
    2. به دنبال "(Acrobat Control for ActiveX (Version x.x" بگرديد و به Install را بزنيد.
    3. نام پالتى كه كمپوننت مورد نظر بايد در آن نصب شود را انتخاب كنيد.
    4. Install را كليك كنيد.
    5. Packageي كه قرار است كمپوننت در آن نصب شود را انتخاب كنيد يا يك Package جديد براى كنترل جديد TPdf بسازيد.
    6. بر روي OK كليك كنيد.
    7. دلفى به شما پيغام مى‌دهد كه آيا مايل به Rebuild كردن Package جديد/تغييريافته هستيد؟
    8. Yes را كليك كنيد. دلفى به شما پيغام مى‌دهد كه كمپوننت TPdf نصب شده است.
    9. Package را ببنديد و به دلفى اجازه دهيد كه آن را Save كند.
    10. حالا كمپوننت در تب ActiveX موجود مى‌باشد.
    13. كمپوننت TPdf را روي فرم بكشيد.
    14. با استفاده از Object Inspector پراپرتي src را مطابق آدرس يك فايل PDF كه روى كامپيوتر شما يا وب موجود مى‌باشد قرار دهيد. حالا تنها كارى كه بايد انجام دهيد تغيير اندازه كمپوننت مورد نظر است.



    نكات:
    1. اگر شما ActiveX مربوطه را نداريد، همين حالا آن را از سايت [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] داون لود كنيد. چون براي اين مثال ضرورى است.
    2. مي‌توانيد آخرين مرحله (مرحله 14) را در زمان اجرا يا RunTime انجام دهيد. بنابراين شما مى‌توانيد هر فايلى را در اجرا باز كرده و آنرا تغيير اندازه دهيد.

  3. #23
    آخر فروم باز Nesta's Avatar
    تاريخ عضويت
    Jan 2005
    محل سكونت
    tehran
    پست ها
    3,343

    پيش فرض

    چگونه يك HotKey يا ميان بر سيستم درست كرده و آن را مديريت كنيم؟ (كه در تمامي برنامه ها كار كند)
    مرجع: [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]


    {**********************

    Copyright © by Jim McKeeth Licensed under LGPL
    ( [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] )

    Demo of creating a system wide hotkey or shortcut
    This was written in Delphi 7,
    but should work in most other versions
    (but obviously not Kylix)
    You need a form with
    1) a THotKey named HotKey1
    2) a TCheckBox named CheckBox1
    To demo
    1) Change the hotkey in the value
    2) Check the box
    3) Minimize the application
    4) Press the hot key
    5) Be impressed
    ---------}
    unit SystemHotKeyUnit1;
    interface
    uses
    Windows, Messages, SysUtils, Classes, Graphics,
    Controls, Forms, StdCtrls, ComCtrls, Dialogs,
    // Menus need to be added for calls in the code
    Menus;

    type
    TForm1 = class(TForm)
    HotKey1: THotKey;
    CheckBox1: TCheckBox;
    procedure FormCreate(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    private
    { Private declarations }
    protected
    // Handle the global hot key
    messages when they are sent to the window
    procedure HotyKeyMsg(var msg:TMessage); message WM_HOTKEY;
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.dfm}

    var
    myAtom: integer;

    function ShiftState2Modifier(const Shift: TShiftState):Word;
    begin
    Result := 0;
    if ssShift in Shift then
    Result := Result or MOD_SHIFT;
    if ssAlt in Shift then
    Result := Result or MOD_ALT;
    if ssCtrl in Shift then
    Result := Result or MOD_CONTROL;
    end;

    function GetShortCutKey(ShortCut: TShortCut):Word;
    var
    shift: TShiftState;
    begin
    ShortCutToKey(ShortCut,Result,shift); // call in Menus!
    end;

    function GetShortCutModifier(ShortCut: TShortCut):Word;
    var
    key: Word;
    shift: TShiftState;
    begin
    ShortCutToKey(ShortCut,key,shift); // call in Menus!
    Result := ShiftState2Modifier(shift);
    end;

    function RegisterHotShortCut(const h:THandle; const Atom: integer;
    const ShortCut: TShortCut):Boolean;
    var
    key : Word;
    Shift: TShiftState;
    begin
    UnregisterHotKey(h,Atom); // call in Windows
    ShortCutToKey(ShortCut,key,shift);
    Result := RegisterHotKey(h,Atom,ShiftState2Modifier(Shift),k ey);
    end;

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    // you need to type cast it as a pChar if you are using a string
    myAtom := GlobalAddAtom(pchar('HotKeyDemo'));
    end;

    procedure TForm1.FormDestroy(Sender: TObject);
    begin
    UnregisterHotKey(Handle,myAtom);
    GlobalDeleteAtom(myAtom);
    end;

    procedure TForm1.CheckBox1Click(Sender: TObject);
    begin
    if CheckBox1.Checked then
    RegisterHotShortCut(Handle,myAtom,HotKey1.HotKey)
    else
    UnregisterHotKey(Handle,myAtom);
    end;

    procedure TForm1.HotyKeyMsg(var msg: TMessage);
    begin
    if (msg.LParamLo=GetShortCutModifier(HotKey1.HotKey))
    and (msg.LParamHi=GetShortCutKey(HotKey1.HotKey)) then
    begin
    Application.BringToFront;
    Showmessage('Hey, now that is a system wide hot key!')
    end;
    end;

    end.

  4. #24
    آخر فروم باز Nesta's Avatar
    تاريخ عضويت
    Jan 2005
    محل سكونت
    tehran
    پست ها
    3,343

    پيش فرض

    در اين مقاله ياد خواهيد گرفت که چگونه با استفاده از کد نويسي در دلفي Activex يا dll مورد نياز برنامه خود را در دستگاه کاربرانتان نصب کنيد.
    براي رسيدن به اين هدف از دستور regsvr32.exe استفاده مي کنيم.
    اين دستور يکي از دستورات ويندوز است که براي رجيستر کردن Activex يا dll ها بکار مي رود.
    خط فرمان اين دستور به شکل زير مي باشد.

    Regsvr32 [/u] [/s] [/n] [/i[:cmdline]] dllname
    /s – در موقع نصب هيچ پيام يا پنجره اي نمايش نده
    /u – حذف فايل

    ما با استفاده از اين دستور ويندوز و کد دلفي زير مي توانيم به نتيجه مورد نظر خود برسيم.

    procedure RegisterOCX;
    type
    TRegFunc = function : HResult; stdcall;
    var
    ARegFunc : TRegFunc;
    aHandle : THandle;
    ocxPath : string;
    begin
    try
    ocxPath := ExtractFilePath(Application.ExeName) + 'Flash.ocx';
    aHandle := LoadLibrary(PChar(ocxPath));
    if aHandle <> 0 then
    begin
    ARegFunc := GetProcAddress(aHandle,'DllRegisterServer');
    if Assigned(ARegFunc) then
    begin
    ExecAndWait('regsvr32','/s ' + ocxPath);
    end;
    FreeLibrary(aHandle);
    end;
    except
    ShowMessage(Format('Unable to register %s', [ocxPath]));
    end;
    end;

    در روال بالا مقدار ocxpath برابر با مسير فايل dll يا ocx ما مي باشد. ممکن است نصب يک dll ياocx طول بکشد و بعد از اجراي روال بالا دستور لازم براي نصب صورت گرفته و برنامه ادامه کار خود را پيگيري مي کند. اگر اين مدت زمان زياد باشد برنامه شما اجرا شده ولي هنوز dll يا ocx رجيستر نشده است. به همين منظور از تابع ExecAndWait استفاده مي کنيم. اين تابع بعد از اجراي يک دستور منتظر مي ماند تا کار به طور کامل انجام پذيرد. کد اين تابع به شرح ذيل مي باشد.

    uses shellapi;
    ...
    function ExecAndWait(const ExecuteFile, ParamString : string): boolean;
    var
    SEInfo: TShellExecuteInfo;
    ExitCode: DWORD;
    begin
    FillChar(SEInfo, SizeOf(SEInfo), 0);
    SEInfo.cbSize := SizeOf(TShellExecuteInfo);
    with SEInfo do begin
    fMask := SEE_MASK_NOCLOSEPROCESS;
    Wnd := Application.Handle;
    lpFile := PChar(ExecuteFile);
    lpParameters := PChar(ParamString);
    nShow := SW_HIDE;
    end;
    if ShellExecuteEx(@SEInfo) then
    begin
    repeat
    Application.ProcessMessages;
    GetExitCodeProcess(SEInfo.hProcess, ExitCode);
    until (ExitCode <> STILL_ACTIVE) or Application.Terminated;
    Result:=True;
    end
    else Result:=False;
    end;

    اميدوارم که از اين مقاله استفاده لازم را برده باشيد.

  5. #25
    آخر فروم باز Nesta's Avatar
    تاريخ عضويت
    Jan 2005
    محل سكونت
    tehran
    پست ها
    3,343

    پيش فرض

    در اين مقاله ميخواهم نحوه برقراري ارتباط با پروتکل ياهو مسنجر يکي ازمعروفترين و مهمترين مسنجرهاي اينترنتي را بيان کنم. در صورتي که علاقه منديد که با Msn مسنجر ارتباط برقرار کنيد مي توانيد از مقالات ديگر که در اين زمينه نوشته ام در همين سايت استفاده کنيد. براي برقراري با پروتکل ياهو مسنجر بايد با دستورات و روش برقراري ارتباط با آن مطلع باشيم. ولي در حال حاضر نمي خواهم به نکات ريز و نحو دستورات اين پروتکل بپردازم . بلکه يک برنامه در دلفي مينويسيم که با استفاده از آن بشود با ياهو مسنجر ارتباط برقرار کرد و از مزاياي آن استفاده کرد. در اين مثال از کمپوننتهاي ايندي Indy استفاده کرده ام ولي شما مي توانيد بر حسب نياز يا سليقه خود از هر کمپوننت ارتباطي ديگري براي برقراري ارتباطات tcp/ip استفاده کنيد.
    کد دلفي

    <-------------------------------BEGIN UNIT CODE ------------------------------>
    unit YahooLogin;

    interface

    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    StdCtrls, ExtCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
    IdTCPClient, IdHTTP, idGlobal;

    type
    TForm1 = class(TForm)
    HTTP: TIdHTTP;
    Panel1: TPanel;
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
    Button1: TButton;
    ListBox1: TListBox;
    Label3: TLabel;
    ListBox2: TListBox;
    Label4: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    private
    { Private declarations }
    FRemoteFile: TStringList;
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.DFM}

    const
    LoginURL = 'http://msg.edit.yahoo.com/config/ncclogin?&n=1&login=%s&passwd=%s';

    procedure TForm1.Button1Click(Sender: TObject);
    var
    Tmp, UserName, Password: String;
    i, BuddyBegin, BuddyEnd: Integer;
    begin
    if (Edit1.Text = '') or (Edit2.Text = '') then
    raise Exception.Create('Login/Password cannot be blank');

    UserName := URLEncode(Edit1.Text);
    PassWord := URLEncode(Edit2.Text);
    Tmp := Format(LoginURL, [UserName, PassWord]);

    FRemoteFile.Text := Http.Get(Tmp);

    if FRemoteFile[0] = 'OK' then
    begin
    for i := 0 to HTTP.Response.ExtraHeaders.Count -1 do
    if pos('Set-Cookie', HTTP.Response.ExtraHeaders[i]) > 0 then
    begin
    //We only care about the first cookie
    ShowMessage('Received Cookie: '+ Copy(HTTP.Response.ExtraHeaders[i], Length('set0cookie.'), Length(HTTP.Response.ExtraHeaders[i])));
    //So we break after getting the first cookie
    Break
    end;

    //Buddy list is delimited by a BEGIN BUDDYLIST and END BUDDYLIST
    BuddyBegin := FRemoteFile.IndexOf('BEGIN BUDDYLIST') +1;
    BuddyEnd := FRemoteFile.IndexOf('END BUDDYLIST') -1;

    for i := BuddyBegin to BuddyEnd do
    //These is the "raw" buddy list parsing is needed for it to make sense
    //Since this is an example I discarded this code
    ListBox1.Items.Add(FRemoteFile[i]);

    BuddyBegin := FRemoteFile.IndexOf('BEGIN IGNORELIST') +1;
    BuddyEnd := FRemoteFile.IndexOf('END IGNORELIST') -1;

    for i := BuddyBegin to BuddyEnd do
    ListBox2.Items.Add(FRemoteFile[i]);

    for i := 0 to FRemoteFile.Count -1 do
    if pos('Mail=', FRemoteFile[i]) > 0 then
    begin
    Tmp := Copy(FRemoteFile[i], length('mail01'), Length(FRemoteFile[i]));
    if StrToInt(Tmp) = 1 then
    ShowMessage('You have a yahoo mail account')
    else
    ShowMessage('You dont have a yahoo mail account');
    Break;
    end;
    end else
    raise Exception.Create('Couldnt log you on');
    end;

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    FRemoteFile := TStringList.Create;
    end;

    end.
    <-----------------------------END UNIT CODE--------------------------------->

    <-----------------------------BEGIN FORM CODE------------------------------->
    object Form1: TForm1
    Left = 192
    Top = 121
    Width = 379
    Height = 443
    Caption = 'Form1'
    Color = clBtnFace
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -13
    Font.Name = 'MS Sans Serif'
    Font.Style = []
    OldCreateOrder = False
    OnCreate = FormCreate
    PixelsPerInch = 120
    TextHeight = 16
    object Label3: TLabel
    Left = 16
    Top = 136
    Width = 65
    Height = 16
    Caption = 'Buddys list'
    end
    object Label4: TLabel
    Left = 194
    Top = 138
    Width = 64
    Height = 16
    Caption = 'Ignore lists'
    end
    object Panel1: TPanel
    Left = 11
    Top = 3
    Width = 342
    Height = 113
    TabOrder = 0
    object Label1: TLabel
    Left = 11
    Top = 24
    Width = 63
    Height = 16
    Caption = 'Username'
    end
    object Label2: TLabel
    Left = 11
    Top = 56
    Width = 60
    Height = 16
    Caption = 'Password'
    end
    object Edit1: TEdit
    Left = 94
    Top = 18
    Width = 233
    Height = 24
    TabOrder = 0
    end
    object Edit2: TEdit
    Left = 96
    Top = 51
    Width = 233
    Height = 24
    TabOrder = 1
    end
    object Button1: TButton
    Left = 139
    Top = 82
    Width = 75
    Height = 25
    Caption = 'Login'
    TabOrder = 2
    OnClick = Button1Click
    end
    end
    object ListBox1: TListBox
    Left = 15
    Top = 160
    Width = 171
    Height = 239
    ItemHeight = 16
    TabOrder = 1
    end
    object ListBox2: TListBox
    Left = 192
    Top = 160
    Width = 171
    Height = 239
    ItemHeight = 16
    TabOrder = 2
    end
    object HTTP: TIdHTTP
    Request.Accept = 'text/html, */*'
    Request.ContentLength = 0
    Request.ContentRangeEnd = 0
    Request.ContentRangeStart = 0
    Request.ProxyPort = 0
    Request.UserAgent = 'Mozilla/4.6 (compatible; Indy Library)'
    Left = 320
    Top = 48
    end
    end
    <-----------------------------END FORM CODE ------------------------------->


    اميدوارم که از کد فوق استفاده لازم را ببريد. انشالله درمقالات بعدي به تشريح کامل روشهاي برقراري ارتباط با اين پروتکل خواهم پرداخت.

  6. #26
    آخر فروم باز Nesta's Avatar
    تاريخ عضويت
    Jan 2005
    محل سكونت
    tehran
    پست ها
    3,343

    پيش فرض

    سلام من حدود 10 تا چیز جدید یا بهتر بگم مقاله جدید گذشتم اگه خوشتون اومد نظر یادتون نده .همش با مثال و کد هست همش هم تست شده و کار می‌کنه.
    متشکر .

  7. #27
    پروفشنال m_h_hadavi's Avatar
    تاريخ عضويت
    May 2005
    محل سكونت
    قم
    پست ها
    510

    پيش فرض

    خيلي خوب بود دستت درد نكنه :lol:

  8. #28
    آخر فروم باز Nesta's Avatar
    تاريخ عضويت
    Jan 2005
    محل سكونت
    tehran
    پست ها
    3,343

    پيش فرض

    نقل قول نوشته شده توسط m_h_hadavi
    خيلي خوب بود دستت درد نكنه :lol:
    سلام خواهش می‌کنم دوست عزیز اگه مشگلی‌ داشتی‌ حتما بگو که حل کنیم .
    متشکر .

  9. #29
    پروفشنال Erfaan's Avatar
    تاريخ عضويت
    Mar 2005
    محل سكونت
    زير آسمون خدا
    پست ها
    685

    پيش فرض

    كدهاي اجراي برنامه ها و فايلها را مي خاستم.
    --------
    كدهاي اجرايي برنامه ها و فايلها يعني كدي كه در دلفي بنويسيم و يك برنامه يا مسير يك فايل از هر نوعي را برايش تعريف كنيم كه با اجرا شدن برنامه ما كد موجود در آن كه وظيفه اجراي برنامه يا فايل ديگري را دارد فعال شود و به اجراي فايل مورد نظر ما بپردازد.
    براي مثال اگر خاستيم نرم افزار نوت پد را در درون برنامه خود با كليدي اجرا كنيم كدي كه مسير در آن قرار ميگيرد چيست.
    اميدوارم كه ديگه نگيد واضح نيست . حالا نوبت شماست دوست عزيزم . اگه واقعا چيزي حاليته دريغ نكن...
    با تشكر فراوان

  10. #30
    آخر فروم باز Nesta's Avatar
    تاريخ عضويت
    Jan 2005
    محل سكونت
    tehran
    پست ها
    3,343

    پيش فرض

    نقل قول نوشته شده توسط SOBHANI_NJ
    كدهاي اجراي برنامه ها و فايلها را مي خاستم.
    سلام دوست عزیز سوال شما یا درخواست شما واضح نیست کد های اجرائی‌ یعنی‌ چی‌؟
    شما قوانین این قسمت رو ملاحظه کنید .
    کمی‌ توضیح بدین که کد های اجرائی‌ و فایل ها یعنی‌ چی‌ ؟ اگه کمی‌ توضیح بدید من کمک می‌کنم.
    :shock:

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •