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

نام تاپیک: چرا HotKey در برنامم فقط یک بار کار می کنه؟

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

    چرا HotKey در برنامم فقط یک بار کار می کنه؟

    با سلام و خدا قوت
    من یه برنامه دارم که باهاش ناحیه ای از صفحه رو انتخاب کرده و به صورت فایل بیت مپ ذخیره می کنم.
    (مثل وقتی که OneNote تو حافظه باشه و دکمه Win+S v رو فشار بدیم)
    برای گرفتن تصویر Ctrl+Q رو تعریف کردم اما نمی دونم چرا برنامم فقط بار اول با فشار این ترکیب کلید فعال میشه.
    لطف کنین یه نگاه به برنامم بندازین:
    فایل های ضمیمه فایل های ضمیمه

  2. #2
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    ایران سرای من است
    پست
    2,655

    نقل قول: چرا HotKey در برنامم فقط یک بار کار می کنه؟

    برنامه رو خیلی پیچیده کردید اما اگر کدها رو بصورت زیر اصلاح کنید همانی میشود که میخواهید.

    Procedure TForm1.WMHotkey( Var msg:TWMHotkey);
    Begin
    If msg.hotkey = 1 Then
    Begin
    Form1.Visible := false;
    CopyScreenRect.Click;
    Form1.Visible := true;
    End;
    end;
    //-------------------------
    procedure TForm1.CopyScreenRectClick(Sender: TObject);
    var
    MyFormat : Word;
    B:TBitmap;
    AData:Cardinal;
    APalette : HPalette;
    begin
    B:=Tbitmap.Create;
    sleep(250);
    ScreenShot(B);
    B.SaveToFile('C:\Desktop.bmp');
    B.Free;
    end;



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

    نقل قول: چرا HotKey در برنامم فقط یک بار کار می کنه؟

    با سلام
    من نمی تونم برنامه رو ساده کنم.روند برنامکه به این صورته که برنامه باید به نوار وظیفه بره تا تمام دسکتاپ نمایان بشه بعد پنجره رو تمام صفحه می کنم و تصویر دسکتاپ رو توی Image می ریزم و بعد از Image ناحیه ای رو ذخیره می کنم.این ناحیه رو هم با یه Shape مستطیل قرمز نمایش می دم که با کلیک و حرکت ماوس قابل تنظیم است.
    من هنوز نفهمیدم مشکل از کجاست برنامم هم نمیتونه به شکلی که شما فرمودین اصلاح بشه و همون کار رو بکنه.
    لطفا بفرمایین چطور کدم رو اصلاح کنم که هم بتونم همه تصویر دسکتاپ رو بدون پنجره برنامه تو برنامم داشته باشم و بتونم یه ناحیه از اون رو در فایل ذخیره کنم؟
    آیا انتقال برنامه به نوار وظیفه موجب می شه Close اجرا بشه و HotKey غیر فعال بشه؟

  4. #4
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    ایران سرای من است
    پست
    2,655

    نقل قول: چرا HotKey در برنامم فقط یک بار کار می کنه؟

    آیا انتقال برنامه به نوار وظیفه موجب می شه Close اجرا بشه و HotKey غیر فعال بشه؟
    نه ربطی به بسته شدن نداره فقط جلوی این پیغام گرفته میشه.
    میتونید کد تعریف مجد hotkey رو به آخر Image1MouseUp اضافه کنید این میتونه مشکل رو حل کنه اما پاسخی برای سوال شما نیست و باید بررسی بشه چرا این پیغام برای فرم بعد از اجرای CopyScreenRectClick ارسال نشده و اجرا نمیشه.
    بفرمایین چطور کدم رو اصلاح کنم که هم بتونم همه تصویر دسکتاپ رو بدون پنجره برنامه تو برنامم داشته باشم و بتونم یه ناحیه از اون رو در فایل ذخیره کنم؟
    کد اصلاحی


    procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
    begin
    CopyScreenRect.Visible:=True;
    SendToClipBoard.Visible:=True;
    Edit1.Visible:=True;
    mouseIsDown:=False;
    P2.X:=X;
    P2.Y:=Y;
    Pic.Width:=P2.X-P1.X+1;
    Pic.Height:=P2.Y-P1.Y+1;
    Pic.Canvas.CopyRect(rect(0,0,Pic.Width,Pic.Height) , Image1.Picture.Bitmap.Canvas,Rect(P1.X,P1.Y,P2.X,P 2.Y));
    Pic.SaveToFile('C:\'+Edit1.text+'.bmp');
    Edit1.text:=IntTostr(StrToInt(Edit1.text)+1);
    Borderstyle:=bsSingle;
    Width:=300;
    Height:=100;
    shape1.Left:=2000;
    // application.Minimize;
    RegisterHotKey(Handle,1,MOD_CONTROL,ord('Q')); // why we must rerun this line
    end;

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

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