کار با پلاگین Transparent

شروع موضوع توسط fireboymilad ‏26 می 2018 در انجمن نرم افزار Autoplay Media Studio

  1. fireboymilad

    fireboymilad Member

    ارسال‌ها:
    34
    تشکر شده:
    7
    امتیاز دستاورد:
    8
    سلام دوستان
    من هر چی گشتم چیزی پیدا نکردم. حتی از مثال پلاگین هم استفاده کردم ولی جوابی نگرفتم
    من میخوام با استفاده از پلاگین Transparent یا بدون پلاگین یکاری کنم که تا زمانی که موس روی پنجره برنامه نیومده برنامه Transparent باشه و وقتی که موس روی پنجره اومد شفافیت پنجره برنامه 100درصد بشه
    همین!
     
    نوشته شده توسط fireboymilad در ‏26 می 2018
  2. SajjadKhati

    SajjadKhati کاربر فعال <A href="http://forum.majidonline.com/f

    ارسال‌ها:
    1,478
    تشکر شده:
    706
    امتیاز دستاورد:
    113
    سلام
    برای transparent از پلاگین winapi میتونین استفاده کنین :


    کد (Text):
    WinApi.SetWindowTrans(Application.GetWndHandle(), 100);
     

    اینکه موس میاد رو پنجره یا نمیاد ، به کدنویسی تون بستگی داره که باید کد نویسی را یاد بگیرین
    آموزش اتوپلی ، در انجمن هست
     
    نوشته شده توسط SajjadKhati در ‏26 می 2018
    fireboymilad از این پست تشکر کرده است.
  3. fireboymilad

    fireboymilad Member

    ارسال‌ها:
    34
    تشکر شده:
    7
    امتیاز دستاورد:
    8
    ممنون . دارم روش کار میکنم . اوکی شد اینجا میذارم ولی میشه بگین چه عددی بجای 100 باید بذارم که شفافیت پنجره صفر بشه و دیگه شفاف نباشه و استاندارد بشه؟!
     
    نوشته شده توسط fireboymilad در ‏26 می 2018
    SajjadKhati از این پست تشکر کرده است.
  4. SajjadKhati

    SajjadKhati کاربر فعال <A href="http://forum.majidonline.com/f

    ارسال‌ها:
    1,478
    تشکر شده:
    706
    امتیاز دستاورد:
    113

    خواهش میکنم
    عدد صفر
    عدد باید بین 0 (حداقل) تا 255 (حداکثر) باشه
     
    نوشته شده توسط SajjadKhati در ‏26 می 2018
    fireboymilad از این پست تشکر کرده است.
  5. fireboymilad

    fireboymilad Member

    ارسال‌ها:
    34
    تشکر شده:
    7
    امتیاز دستاورد:
    8
    بازم تشکر
    تا اینجا پیش رفتم که برنامه که اجرا میشه شفافیت 100 هستش
    موس که میاد روش شفافیت 255 میشه
    ولی وقتی موس از روی پنجره برنامه میره بیرون تشخیص سخت میشه و تا موقعی که موس روی برنامه هست کار میکنه
    میشه کاری کرد که برنامه مرتب موقعیت موس رو بسنجه یه تایمر باشه که چک کن موقعیت موس رو مرتب!
     
    نوشته شده توسط fireboymilad در ‏26 می 2018
    SajjadKhati از این پست تشکر کرده است.
  6. fireboymilad

    fireboymilad Member

    ارسال‌ها:
    34
    تشکر شده:
    7
    امتیاز دستاورد:
    8
    البته من تازگیا اومد سمت اتوپلی قبلا mmb کار میکردم. بخاطر آپدیت نشدنش و مشکلاتی که تو ویندوز 10 داشت مجبور شدم بیام سمت اتوپلی
    تو mmb اینجور مشکلی نداشتم و میشد موقعیت موس رو مرتب چک کرد
    نمیدونم شایدم تو اتوپلی هم باشه
    فعلا دارم سرچ میکنم
     
    نوشته شده توسط fireboymilad در ‏26 می 2018
    SajjadKhati از این پست تشکر کرده است.
  7. fireboymilad

    fireboymilad Member

    ارسال‌ها:
    34
    تشکر شده:
    7
    امتیاز دستاورد:
    8
    حل شد
    بالاخره چیزی رو میخواستم بدست آوردم
    ممنون از راهنمایی دوستان
     
    نوشته شده توسط fireboymilad در ‏26 می 2018
    SajjadKhati از این پست تشکر کرده است.
  8. SajjadKhati

    SajjadKhati کاربر فعال <A href="http://forum.majidonline.com/f

    ارسال‌ها:
    1,478
    تشکر شده:
    706
    امتیاز دستاورد:
    113

    چجوری حل شده؟
    اتوپلی رویداد Mouse Leave برای پنجره ی اصلی اش نداره
     
    نوشته شده توسط SajjadKhati در ‏26 می 2018
  9. fireboymilad

    fireboymilad Member

    ارسال‌ها:
    34
    تشکر شده:
    7
    امتیاز دستاورد:
    8
    با یه ترفند عجیب و غریب!!!!
    1. با استفاده از پلاگینی که شما معرفی کردید
    2. کد رویداد On Show صفحه مورد نظر :
    کد (Text):
    cursor_x = 0
    cursor_x_old = 0
    Page.StartTimer(500, 10);
    WinApi.SetWindowTrans(Application.GetWndHandle(), 200);
    3. کد رویداد On Timer صفحه :
    کد (Text):
    tMousePos = System.GetMousePosition(true);
    tPageSize = {W=790,H=545};
    if tMousePos.X < 0 or tMousePos.X > tPageSize.W then
    -- Mouse is outside the left or right side of the page
    WinApi.SetWindowTrans(Application.GetWndHandle(), 200);
    end
    if tMousePos.Y < 0 or tMousePos.Y > tPageSize.H then
    -- Mouse is outside the top or bottom side of the page
    WinApi.SetWindowTrans(Application.GetWndHandle(), 200);
    end
    3. کد رویداد Mouse Move صفحه مورد نظر :
    کد (Text):
    window_pos = Window.GetPos(Application.GetWndHandle());
    cursor_pos = DLL.CallFunction("CursorPos.dll", "GetMouseXY", "", DLL_RETURN_TYPE_STRING, DLL_CALL_STDCALL);
    strlength = String.Length(cursor_pos);
    delimiter_pos = String.Find(cursor_pos, ";;", "1", false);
    cursor_x = String.Left(cursor_pos, (delimiter_pos - 1));
    cursor_y = String.Right(cursor_pos, (strlength - (delimiter_pos + 1)));
    if (cursor_x ~= cursor_x_old) then
    --this indicates that the mouse pointer has moved so you should
    --perform whatever actions you want here including the following
    WinApi.SetWindowTrans(Application.GetWndHandle(), 255);
    else
    WinApi.SetWindowTrans(Application.GetWndHandle(), 200);
    end
    if (cursor_y ~= cursor_x_old) then
    --this indicates that the mouse pointer has moved so you should
    --perform whatever actions you want here including the following
    WinApi.SetWindowTrans(Application.GetWndHandle(), 255);
    end
    پایان . موفق باشید . ;)
     
    نوشته شده توسط fireboymilad در ‏27 می 2018
    SajjadKhati از این پست تشکر کرده است.
  10. SajjadKhati

    SajjadKhati کاربر فعال <A href="http://forum.majidonline.com/f

    ارسال‌ها:
    1,478
    تشکر شده:
    706
    امتیاز دستاورد:
    113

    بله
    البته میتونین از کد زیر هم استفاده کنید (با فعال کردن پلاگین MemoryEx) (اصولی اش ، این کد هه)
    در global function :


    کد (Text):

    WM_NCMOUSELEAVE = 0x02A2;

    function EventHandler(hWnd, uMsg, wParam, lParam)
        if (hWnd == mainWinHdl and uMsg == WM_NCMOUSELEAVE) then
        --write code here
        end

    return Subclass.OldWinProc(hWnd, uMsg, wParam, lParam);
    end
     

    کدی که زمانی که میخواین موس تون از پنجره خارج میشه ، اجرا بشه را در قسمت --write code here در کد بالا بنویسید
    البته این کد ، هم زمانی که موس از پنجره خارج و هم به پنجره وارد میشه ، اجرا میشه (اگه فقط با خارج شدن موس سر و کار دارید ، میتونید با شرط هایی که از متغییرهای رویدادی mouse move یا هر روشی دیگه ای که به نظرتون میرسه ، اجرای کد را محدود به زمان خروج کنید)

    در رویداد On Show یا On Preload هم :


    کد (Text):
    mainWinHdl = Application.GetWndHandle();
    Subclass.Create(mainWinHdl, EventHandler);
     

    در رویداد On ShutDown هم :


    کد (Text):
    Subclass.Remove(mainWinHdl);
     

    -----------------------------------------------------------------------------------------------------------



    از من میشنوید ، به اتوپلی هم تکیه نکنید . چندان فرق خاصی با mmb نداره . تهش میخواد چهار پنج برابر ازش قویتر عمل کنه (حالا نمیدونم. مثال گفتم) ولی محدودیت های بسیار زیادی داره و وقت گذاشتن برای لوا و مخصوصا اتوپلی ، وقت تلف کردنه
    به نظرم وقت تون را برای یادگیری سی شارپ صرف کنید
     
    آخرین ویرایش: ‏27 می 2018
    نوشته شده توسط SajjadKhati در ‏27 می 2018

به اشتراک بگذارید