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

نام تاپیک: ارسال Ctrl+C به برنامه دیگر

  1. #1
    کاربر دائمی آواتار mbshareat
    تاریخ عضویت
    آبان 1387
    محل زندگی
    شهر مقدس قم-چهارمردان-کوچه 37
    پست
    963

    ارسال Ctrl+C به برنامه دیگر

    سلام بر دوستان عزیز
    من در برنامه نیاز دارم تصویری از فایل PDF بگیرم و ذخیره کنم.بعضی برنامه ها هستند که وقتی یک ناحیه رو انتخاب می کنیم خودکار تصویر رو به کلیپ برد می فرستند. اما الان در کامپیوتر ادوب آکروبات پرو دارم که چیزی در کلیپ برد نمیذاره. مجبوره یا کلیک روی منو رو شبیه سازی کنم یا Ctrl+C. کد SendMessage , keybd_event v رو امتحان کردم ولی بیفایده بود. من یک HotKey برای شیفت و W تعریف کردم که وقتی در برنامه اجراگر PDF (مثل فاکسیت ریدر) هستیم به برنامه خودم منتقل بشه و تصویر کلیپ برد رو با نام خاص ذخیره کند. اما وقتی به برنامه برمیگرده یه پیغام میاد که کلیپ برد فرمت تصویر نداره.لطفا راهنمایی کنید. یادمه قبلا هم شبیه سازی کلید دردساز و خیلی مواقع بیفایده بوده.من این کدها رو امتحان کردم:
            keybd_event(VK_LCONTROL, 0, 0, 0); 
    keybd_event(Ord('C'), 0, 0, 0);
    keybd_event(Ord('C'), 0, KEYEVENTF_KEYUP, 0);
    keybd_event(VK_LCONTROL, 0, KEYEVENTF_KEYUP, 0);}
    H:=GetForeGroundWindow();
    PostMessage(H, WM_KEYDOWN, VK_CONTROL, 0);
    PostMessage(H, WM_KEYDOWN, Ord('C'),0);
    PostMessage(H, WM_KEYUP, Ord('C'), 0);
    PostMessage(H, WM_KEYUP, VK_CONTROL,0);
    Application.ProcessMessages;

    با این توضیح که برنامه پنجره جاری رو بررسی می کنه و GetForeGroundWindow برنامه ادوب آکروبات رو درست تشخیص میده.

  2. #2

    نقل قول: ارسال Ctrl+C به برنامه دیگر

    نقل قول نوشته شده توسط mbshareat مشاهده تاپیک
    سلام بر دوستان عزیز
    من در برنامه نیاز دارم تصویری از فایل PDF بگیرم و ذخیره کنم.بعضی برنامه ها هستند که وقتی یک ناحیه رو انتخاب می کنیم خودکار تصویر رو به کلیپ برد می فرستند. اما الان در کامپیوتر ادوب آکروبات پرو دارم که چیزی در کلیپ برد نمیذاره. مجبوره یا کلیک روی منو رو شبیه سازی کنم یا Ctrl+C. کد SendMessage , keybd_event v رو امتحان کردم ولی بیفایده بود. من یک HotKey برای شیفت و W تعریف کردم که وقتی در برنامه اجراگر PDF (مثل فاکسیت ریدر) هستیم به برنامه خودم منتقل بشه و تصویر کلیپ برد رو با نام خاص ذخیره کند. اما وقتی به برنامه برمیگرده یه پیغام میاد که کلیپ برد فرمت تصویر نداره.لطفا راهنمایی کنید. یادمه قبلا هم شبیه سازی کلید دردساز و خیلی مواقع بیفایده بوده.من این کدها رو امتحان کردم:
            keybd_event(VK_LCONTROL, 0, 0, 0); 
    keybd_event(Ord('C'), 0, 0, 0);
    keybd_event(Ord('C'), 0, KEYEVENTF_KEYUP, 0);
    keybd_event(VK_LCONTROL, 0, KEYEVENTF_KEYUP, 0);}
    H:=GetForeGroundWindow();
    PostMessage(H, WM_KEYDOWN, VK_CONTROL, 0);
    PostMessage(H, WM_KEYDOWN, Ord('C'),0);
    PostMessage(H, WM_KEYUP, Ord('C'), 0);
    PostMessage(H, WM_KEYUP, VK_CONTROL,0);
    Application.ProcessMessages;

    با این توضیح که برنامه پنجره جاری رو بررسی می کنه و GetForeGroundWindow برنامه ادوب آکروبات رو درست تشخیص میده.
    از این کد کمک بگیر

    procedure TForm1.Button1Click(Sender: TObject);
    const
    FullWindow = True;
    var
    Win: HWND;
    DC: HDC;
    Bmp: TBitmap;
    WinRect: TRect;
    Width: Integer;
    Height: Integer;
    begin
    Form1.Hide;
    try
    Application.ProcessMessages;
    Win := GetForegroundWindow;


    if FullWindow then
    begin
    GetWindowRect(Win, WinRect);
    DC := GetDC(Win);
    end else
    begin
    Winapi.Windows.GetClientRect(Win, WinRect);
    DC := GetDC(Win);
    end;
    try
    Width := WinRect.Right - WinRect.Left;
    Height := WinRect.Bottom - WinRect.Top;


    Bmp := TBitmap.Create;
    try
    Bmp.Height := Height;
    Bmp.Width := Width;
    BitBlt(Bmp.Canvas.Handle, 0, 0, Width, Height, DC, 0, 0, SRCCOPY);
    Bmp.SaveToFile('C:\Screenshot.bmp');
    finally
    Bmp.Free;
    end;
    finally
    ReleaseDC(Win, DC);
    end;
    finally
    Form1.Show;
    end;
    end;

تاپیک های مشابه

  1. سوال: کنترل Ctrl+Z,Ctrl+E,Ctrl+Ent در RichEdit
    نوشته شده توسط mbshareat در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 2
    آخرین پست: چهارشنبه 02 مرداد 1398, 13:51 عصر
  2. بستن ctrl + a و ctrl+c در فایر فاکس
    نوشته شده توسط dj_morteza در بخش JavaScript و Framework های مبتنی بر آن
    پاسخ: 3
    آخرین پست: سه شنبه 19 آذر 1392, 01:15 صبح
  3. سوال: تشخیص ctrl+c /ctrl+v
    نوشته شده توسط nickandish در بخش برنامه نویسی با Borland C++‎ Builder
    پاسخ: 2
    آخرین پست: چهارشنبه 22 تیر 1390, 14:49 عصر
  4. سوال: دلیل عمل نکردن كليد های ctrl+c يا ctrl+v در فرمهای MDI؟
    نوشته شده توسط reg_google در بخش C#‎‎
    پاسخ: 5
    آخرین پست: سه شنبه 02 آذر 1389, 11:27 صبح

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

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