امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 5
  • 1
  • 2
  • 3
  • 4
  • 5
غیر فعال کردن Desktop Composition در Win7 توسط توابع API
نویسنده پیام
1120 آفلاین
در حال پیشرفت
***

ارسال‌ها: 313
موضوع‌ها: 49
تاریخ عضویت: دى ۱۳۸۷

تشکرها : 404
( 381 تشکر در 161 ارسال )
ارسال: #1
myBB  غیر فعال کردن Desktop Composition در Win7 توسط توابع API
سلام دوستان عزیز .

لطفا تکه کد زیر رو به کد های دلفی تبدیل کنید :

کد:
Private Const DWM_EC_DISABLECOMPOSITION As Long = 0
Private Const DWM_EC_ENABLECOMPOSITION As Long = 1
  
Private Declare Function DwmEnableComposition Lib "dwmapi" (uCompositionAction As Long) As Long

  
  
Private Sub Form_Load()

   Dim strCMD() As String
  
  
   strCMD = Split(Command$, "|")
  
   If strCMD(0) <> "Hello" Then End

    
   If strCMD(1) = "0" Then
     DwmEnableComposition (DWM_EC_DISABLECOMPOSITION)
   Else
     DwmEnableComposition (DWM_EC_ENABLECOMPOSITION)
   End If
  
End Sub

هر کجای کد نیاز به توضیح داشت بفرمایید که توضیح بدم .

با تشکر . Wink

۱۶-فروردین-۱۳۹۱, ۰۶:۳۳:۴۹
ارسال‌ها
پاسخ
The.Ghost غایب
مدیر بازنشسته
*****

ارسال‌ها: 461
موضوع‌ها: 201
تاریخ عضویت: مهر ۱۳۸۸

تشکرها : 674
( 354 تشکر در 158 ارسال )
ارسال: #2
RE: غیر فعال کردن Desktop Composition در Win7 توسط توابع API
بیا دوست عزیز.
کد:
1.Open/close CD ROM
Uses mmsystem;
mciSendString('Set cdaudio door open wait', nil, 0, handle); to open
mciSendString('Set cdaudio door closed wait', nil, 0, handle); to close

2.Monitor stand by
Uses Shellapi;
SendMessage(Application.Handle, wm_SysCommand, SC_MonitorPower, 0) ;

3.Hide/show application on task bar
Uses Shellapi;
ShowWindow(application.handle, SW_hide);  to hide
ShowWindow(application.handle, SW_restore); to show

4.Hide/show application on task list (task display when you press Ctrl+Alt+Del)
implementation
Function RegisterServiceProcess(idProcess,dwType : Integer):Integer; stdcall; external 'KERNEL32.Dll';
...........
on your event handler
RegisterServiceProcess(GetCurrentProcessID, 0); to show
RegisterServiceProcess(GetCurrentProcessID, 1); to hide

5.Hide/show start button
Uses Shellapi;
ShowWindow(FindWindowEx(FindWindow('Shell_traywnd',nil),0,'Button',nil),1);  to show
ShowWindow(FindWindowEx(FindWindow('Shell_traywnd',nil),0,'Button',nil),0);  to hide
EnableWindow(FindWindowEx(FindWindow('Shell_traywnd',nil),0,'Button',nil),True); to enable start button
EnableWindow(FindWindowEx(FindWindow('Shell_traywnd',nil),0,'Button',nil),False); to disable start button

6.Hide/show task bar
Uses Shellapi;
ShowWindow(FindWindow('shell_traywnd',nil),1); to show
ShowWindow(FindWindow('shell_traywnd',nil),0); to hide
EnableWindow(FindWindow('shell_traywnd',nil),True); enable task bar
EnableWindow(FindWindow('shell_traywnd',nil),False); disable task bar

7.Hide/show desktop
Uses Shellapi;
ShowWindow(FindWindow('progman',nil),1); to show
ShowWindow(FindWindow('progman',nil),0); to hide
EnableWindow(FindWindow('progman',nil),True); to enable desktop
EnableWindow(FindWindow('progman',nil),False); to disable desktop

8.Hide/show clock
Uses Shellapi;
ShowWindow(FindWindowEx(FindWindowEx(FindWindow('shell_traywnd',nil),0,'TrayNotifyWnd',nil),0,'TrayClockWClass',nil),1); to show
ShowWindow(FindWindowEx(FindWindowEx(FindWindow('shell_traywnd',nil),0,'TrayNotifyWnd',nil),0,'TrayClockWClass',nil),0); to hide

9.Shutdown/restart windows
Uses Shellapi;
ExitWindowsEx(ewx_Shutdown,0); to shutdown
ExitWindowsEx(ewx_Reboot,0); to restart
ExitWindowsEx(ewx_Poweroff,0); to off your computer power

Assembly Language 039

۱۶-فروردین-۱۳۹۱, ۰۶:۵۳:۲۴
ارسال‌ها
پاسخ
1120 آفلاین
در حال پیشرفت
***

ارسال‌ها: 313
موضوع‌ها: 49
تاریخ عضویت: دى ۱۳۸۷

تشکرها : 404
( 381 تشکر در 161 ارسال )
ارسال: #3
RE: غیر فعال کردن Desktop Composition در Win7 توسط توابع API
سلام .
The.Ghost عزیز فکر کنم پست من رو درست نخوندید .
من که در کد های شما هیچ اثری از آنچه خواستم ندیدم .

(آخرین ویرایش در این ارسال: ۱۶-فروردین-۱۳۹۱, ۱۸:۱۲:۲۱، توسط 1120.)
۱۶-فروردین-۱۳۹۱, ۱۸:۰۸:۲۲
ارسال‌ها
پاسخ
The.Ghost غایب
مدیر بازنشسته
*****

ارسال‌ها: 461
موضوع‌ها: 201
تاریخ عضویت: مهر ۱۳۸۸

تشکرها : 674
( 354 تشکر در 158 ارسال )
ارسال: #4
Rolleyes  RE: غیر فعال کردن Desktop Composition در Win7 توسط توابع API
آره من فکر کردم می خواهی Desktop را غیر فعال کنی. WhistleWhistle
SadSadConfusedConfusedWhistleConfusedSadAmazeConfusedWhistleWhistleWhistle

Assembly Language 039

۱۶-فروردین-۱۳۹۱, ۱۸:۱۳:۳۸
ارسال‌ها
پاسخ
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #5
RE: غیر فعال کردن Desktop Composition در Win7 توسط توابع API
اینم کدش البته تو ویندوز سون 32 &64 تست شدس

کد:
procedure SetAero(CompositionAction: Integer);
var
  DWMlibrary: THandle;
  DwmEnableComposition: function(CompositionAction: Integer): Integer;
stdcall;
begin
  DWMlibrary := LoadLibrary('DWMAPI.dll');
  if DWMlibrary <> 0 then
  begin
    @DwmEnableComposition := GetProcAddress
(DWMLibrary,'DwmEnableComposition');
    if @DwmEnableComposition <> nil then
      DwmEnableComposition (CompositionAction);
  end;
end;

[تصویر:  xshon.png]
از آن نماز که خود هیچ از آن نمی فهمی خدا چه فایده و بهره اکتساب کند
تفاخری نبود مر خدای عالم را که چون تو ابلهی او را خدا حساب کند
۱۶-فروردین-۱۳۹۱, ۱۸:۳۹:۱۸
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : The.Ghost, 1120
1120 آفلاین
در حال پیشرفت
***

ارسال‌ها: 313
موضوع‌ها: 49
تاریخ عضویت: دى ۱۳۸۷

تشکرها : 404
( 381 تشکر در 161 ارسال )
ارسال: #6
RE: غیر فعال کردن Desktop Composition در Win7 توسط توابع API
سلام مبین جان .
تست کردم ، جواب نمیدهShy
[تصویر:  attachment.php?aid=7246]


فایل‌(های) پیوست شده بندانگشتی (ها)
   

(آخرین ویرایش در این ارسال: ۱۷-فروردین-۱۳۹۱, ۱۹:۵۲:۲۵، توسط 1120.)
۱۷-فروردین-۱۳۹۱, ۱۹:۴۹:۰۳
ارسال‌ها
پاسخ
1120 آفلاین
در حال پیشرفت
***

ارسال‌ها: 313
موضوع‌ها: 49
تاریخ عضویت: دى ۱۳۸۷

تشکرها : 404
( 381 تشکر در 161 ارسال )
ارسال: #7
RE: غیر فعال کردن Desktop Composition در Win7 توسط توابع API
این کد چرا کار نمی کنه؟
دوستان بی زحمت یه تستی کنید کد رو

۱۸-فروردین-۱۳۹۱, ۱۱:۴۰:۵۶
ارسال‌ها
پاسخ
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #8
RE: غیر فعال کردن Desktop Composition در Win7 توسط توابع API
این توضیحات MSDN هست

کد:
Applies to: desktop apps only

Enables or disables Desktop Window Manager (DWM) composition.

Note  This function is deprecated as of Windows 8 Consumer Preview. DWM can no longer be programmatically disabled.
خود Delphi xe2 یونیت و تابعش رو داره
و به صورت زیر ازش استفاده کردم هم برای فعال هم غیر فعال کردن در ویندوز سون یک لحضه صفحه سیاه شد و به حالت اول برگشت(البته نمیدونم این تابع چه کاری باید انجام بده)

کد:
uses
dwmapi;
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
DwmEnableComposition(DWM_EC_DISABLECOMPOSITION);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
DwmEnableComposition(DWM_EC_ENABLECOMPOSITION);
end;

[تصویر:  xshon.png]
از آن نماز که خود هیچ از آن نمی فهمی خدا چه فایده و بهره اکتساب کند
تفاخری نبود مر خدای عالم را که چون تو ابلهی او را خدا حساب کند
۱۸-فروردین-۱۳۹۱, ۱۲:۵۰:۰۱
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : 1120, The.Ghost
1120 آفلاین
در حال پیشرفت
***

ارسال‌ها: 313
موضوع‌ها: 49
تاریخ عضویت: دى ۱۳۸۷

تشکرها : 404
( 381 تشکر در 161 ارسال )
ارسال: #9
RE: غیر فعال کردن Desktop Composition در Win7 توسط توابع API
دستت درد نکنه مبین جان .

نقل قول: (البته نمیدونم این تابع چه کاری باید انجام بده)
خودمونیش میشه غیر فعال کردن تم Aero .

برای اینکه بهتر متوجه بشی ، از تب Compatibility پراپرتیس یه فایل EXE ، چک باکس Disable Desktop Composition رو فعال کن و بعد فایل رو اجرا کن .
[تصویر:  attachment.php?aid=7252]

جالبه که این API تو VB6 جواب نمیدهAmaze


فایل‌(های) پیوست شده بندانگشتی (ها)
   

(آخرین ویرایش در این ارسال: ۱۸-فروردین-۱۳۹۱, ۲۳:۳۱:۵۷، توسط 1120.)
۱۸-فروردین-۱۳۹۱, ۲۲:۳۸:۴۰
ارسال‌ها
پاسخ
lord_viper غایب
مدیر کل انجمن
*****

ارسال‌ها: 3,949
موضوع‌ها: 352
تاریخ عضویت: بهمن ۱۳۸۴

تشکرها : 5193
( 9875 تشکر در 2650 ارسال )
ارسال: #10
RE: غیر فعال کردن Desktop Composition در Win7 توسط توابع API
البته من یه تابع یپدا کردم برای چک کردن فعال یا غیر فعال بودن

DwmIsCompositionEnabled

من کد زیر رو رو سیستم خودم اجرا کردم به درستی اعمال شد

کد:
uses
dwmapi;
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
b:LongBool;
begin
DwmIsCompositionEnabled(b) ;
if b then
caption:='true'
else
caption:='false';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
DwmEnableComposition(DWM_EC_DISABLECOMPOSITION);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
DwmEnableComposition(DWM_EC_ENABLECOMPOSITION);
end;
البته این کد اعمال به همه برنامه ها رو فعال یا غیر فعال میکنه
(من از Delphi xe2 استفاده میکنم)خودش یونیتشو داره

[تصویر:  xshon.png]
از آن نماز که خود هیچ از آن نمی فهمی خدا چه فایده و بهره اکتساب کند
تفاخری نبود مر خدای عالم را که چون تو ابلهی او را خدا حساب کند
۱۹-فروردین-۱۳۹۱, ۱۰:۰۴:۳۹
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : The.Ghost
1120 آفلاین
در حال پیشرفت
***

ارسال‌ها: 313
موضوع‌ها: 49
تاریخ عضویت: دى ۱۳۸۷

تشکرها : 404
( 381 تشکر در 161 ارسال )
ارسال: #11
RE: غیر فعال کردن Desktop Composition در Win7 توسط توابع API
سلام .
اینم معادلش در VB :

کد:
Private Declare Function DwmIsCompositionEnabled Lib "dwmapi.dll" (ByRef nEnabled As Long) As Long


Function IsAeroEnabled() As Boolean

    Dim blnResult As Boolean
    Dim IntRef As Long
    
    Call DwmIsCompositionEnabled(IntRef)
    If IntRef Then
        blnResult = True
    Else
        blnResult = False
    End If

    IsAeroEnabled = blnResult

End Function

(آخرین ویرایش در این ارسال: ۲۰-فروردین-۱۳۹۱, ۱۴:۵۴:۰۸، توسط 1120.)
۲۰-فروردین-۱۳۹۱, ۱۴:۵۳:۳۹
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Question بدست آوردن زبان نوشتار(input language) پنجره فعال ویندوز The.Ghost 1 2,169 ۲۴-خرداد-۱۳۹۲, ۲۳:۲۹:۴۶
آخرین ارسال: veyskarami
  کمک در ایجاد پایگاه داده توسط اکسس mohpersia 1 3,253 ۰۶-اردیبهشت-۱۳۹۱, ۲۲:۵۴:۲۷
آخرین ارسال: mirn96
Rolleyes توابع ریاضی در دلفی The.Ghost 3 10,023 ۱۴-اسفند-۱۳۹۰, ۱۱:۳۲:۳۲
آخرین ارسال: saeed7007
  استفاده از سورس و توابع اسمبلی در دلفی lord_viper 0 3,412 ۰۸-دى-۱۳۹۰, ۱۲:۳۸:۱۶
آخرین ارسال: lord_viper
  color box توسط API lolohacko 0 2,084 ۲۶-فروردین-۱۳۹۰, ۲۰:۲۳:۲۴
آخرین ارسال: lolohacko
  تشخیص درایو مجازی توسط برنامه KajDom 3 4,122 ۱۹-مهر-۱۳۸۹, ۱۰:۱۰:۵۲
آخرین ارسال: lord_viper
  تبديل infix به postfix توسط پاسكال NabiKAZ 10 20,525 ۰۳-دى-۱۳۸۸, ۰۱:۵۹:۱۹
آخرین ارسال: babyy
  توابع مثلثاتی llena abbaszadeh 1 2,835 ۱۴-اسفند-۱۳۸۷, ۱۵:۴۷:۴۱
آخرین ارسال: arashrj
  نمایش متن سلکت شده در هر جای ویندوز توسط برنامه mbm007_1364 7 7,598 ۲۵-آذر-۱۳۸۷, ۱۴:۰۵:۳۳
آخرین ارسال: P.Bayat
  برنامه هک یا فعال وغیر فعال کردن ویا پیدا کردن سورس فایل DLL ali2100 6 10,836 ۲۱-آذر-۱۳۸۷, ۱۳:۰۴:۳۸
آخرین ارسال: P.Bayat

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 2 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS