الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

How can i get Handle to window to any running application

بدأه alaamostafa2000 في 8 يناير 2003 · 9 رد · 5,888 مشاهدة · في قسم المواضيع الهامة في قسم السي /سي++
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

i need to get handle to window to some running applications

like as an example

if there is some program name program.exe

is running on my machine

and i need to make program to get a window handle to this program

so what is the name of the function to do such a thing

thanks

#2
// Compiled by Visual C++6.0 & C++ builder5.0 on winxp

#include <stdio.h>

#include <conio.h>

#include <string.h>

#include <windows.h>

HWND whandle[256]; 

int count=0;

BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam);



int main(int argc, char* argv[])

{

printf("Hide ? ");

int lParam=getchar();

if (lParam=='Y'||lParam=='y')

lParam=1; //enumerate & hide

else

lParam=0; //enumerate with hidding

getchar(); // Why ? You try to find the reason  

EnumWindows(&EnumWindowsProc,lParam); //Hide

if(lParam==1) //Unhide

{

printf("Press anykey to unhide ...n");

getch();

for(int i=0;i<=count;i++)

ShowWindow(whandle,SW_SHOWNA);

}

printf("Press any key to halt ...n");

getch();

return 0;

}



BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)

{

char Buffer[256];

if( IsWindowVisible(hwnd) /*|| IsIconic(hwnd)*/)

//You try to keep the condition IsIconic & check the different

{

if(lParam==1)

{

whandle[count]=hwnd;

count++;

GetClassName(hwnd,Buffer,256);

if( 

//Desktop

strcmp(Buffer,"Progman")&

//Our program

(hwnd!=GetForegroundWindow()) & 

//TaskBar

strcmp(Buffer,"Shell_TrayWnd")

)

ShowWindow(hwnd,SW_HIDE);

}

//------- Show handle & Caption of windows---

GetWindowText(hwnd, Buffer, 256);

if(strlen(Buffer)== 0 )

strcat(Buffer , "Empty");

printf("%dt%sn",hwnd,Buffer); 

//-------------------------------------------

}

return true;

}

هذا كود كتبه يوما اخي tmaaa , ترى كيف يقوم البرنامج برصد كل النوافذ الموجودة (الشغالة), وانت تضع الشرط للنافذة التي تريدها...

جرب الكود واي مشكلة إسأل.

#3

جزاك الله كل خير يا أخ إسماعيل

أنا جربت البرنامج وكان به بالضبط ما اريد

ولكن عندى تساؤل

الدوال المستخدمة فى هذا البرنامج موجودة بالفعل فى MFC ولكن

بـ Parameters مختلفة

فحتى الان انا لم استطع استخدامها فى برناج بـ MFC

فإذا كان عندك الحل فأتمنى ان تعطية لى

وانا شاكر جدا لاهتمامك بالرد

والسلام عليكم ورحمة الله وبركاته

#4

السلام عليكم

WOW!

اخ ابراهيم لسه مذكر هذا؟! :eek:

انا نسيت اني كتبت هذا من قبل :D , الان تذكرت كل شي .

هناك طريقه لعمل المطلوب ولكن ربما ليست هي الطريقه الأمثل. هذه فكره عنها :

الفكره تعتمد على معرفه مسبقه بالـ PID للبرنامج المستهدف ولتكن TargetPID.

سنقوم باستعمال EnumWindows للحصول على كل الـ windows الموجوده , أثناء ذلك سنحصل على الـ Handle الخاص بكل window , وباستعمال التابع GetWindowThreadProcessId يمكن الحصول على الـ PID الخاصه بالـ Handle , سنقوم بمقارنه كل PID نحصل عليها من التابع السابق مع الـ TargetPID , وما ان يتحقق TargetPID=PID نعلم ان الـ Handle هو المطلوب .

بالنسبه للحصول على الـ PID لـ Process معينه معروف اسمها فقط نقوم بعمل Enumerate للـ Process التي هي قيد العمل ( الشغاله حاليا ) , و بمقارنه اسم الـ Process يمكن معرفه الـ PID الخاصة بالبرنامج الذي هو هدفنا ( يمكن ان يكون هناك اكثر من Process بنفس الاسم ).

(f)

CIONO1

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#5

السلام عليكم

تذكرت شي :D

في برنامج اسمه PrcView يقوم بعرض Running Process فيه ميزه switch to window . وهو يعتمد على نفس الطريقه السابقه ( من خلال الاطلاع على DisAssembly للبرنامج المذكور لاحظت ذلك . جرب اعمل DisAssemble للبرنامج المذكور وستلاحظ ذلك ).

(f)

CIONO1

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#6

السلام عليكم ورحمة الله وبركاته

انا بصراحة مش عارف كيف اشكرك على الرد السريع

ربنا يكرمك إن شاء الله

انا بالفعل حصلت بالضبط على ما اريد ولكن هناك سؤال آخر

هل يمكن ان احصل على handle to window للبرامج الشغاله على جهاز آخر فى الشبكة

اذا كنت لا تعرف بالضبط يا ريت تذكرلى كيف ابحث عن هذه المعلومة

ولك جزيل الشكر والاحترام

والسلام عليكم ورحمة الله وبركاته

#7

السلام عليكم

تحتاج لعمل connection للكمبيوتر الاخر . راجع التوابع Windows Networking Functions في MSDN .

WNetAddConnection

WNetAddConnection2

WNetAddConnection3

WNetCancelConnection

WNetCancelConnection2

WNetCloseEnum

WNetConnectionDialog

WNetDisconnectDialog

WNetEnumResource

WNetGetConnection

WNetGetLastError

WNetGetUniversalName

WNetGetUser

WNetOpenEnum

(f)

CIONO1

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#8

FindWindow Function helps you to search for specific window By ClassName Or Window Title and If you want to Search For Another find Use FindWindow Too Or FindowWindowEx

#9
Neo_2010 كتب:

FindWindow Function helps you to search for specific window By ClassName Or Window Title and If you want to Search For Another find Use FindWindow Too Or FindowWindowEx

goood

#10

السؤال: ما هى العلاقه بين ال ++C وبين ال.NETو ايه السبب ؟

#الوضحة من ان العلاقه بها جزء NETWORKING .

#هى موصله بالفجيوال ++C اما ايه الفكرة ؟

#يمكن استخدمها فى البرامج المتصفح الويت والتصميم وليه الاكثر انشارا ال CSS أو css Style ? .... ألخ.

#اسئله كثيره مفضله للاماكن المحدده لها الاخرى :):)(: #

مرحبا الاصدقاء:

الاسئله الاعلى ^.

مواضيع مشابهة