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

[ تمت الإجابة ]كيف أحصل على مقبض البرنامج hInstance

مغلق
بدأه MSVS في 2 نوفمبر 2005 · 6 رد · 1,462 مشاهدة · في أرشيف قسم Windows APIs
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

عندي :

Process ID

Module ID

Threads ID

EXE File

كيف يمكنني أن أحصل على مقبض البرنامج hInstance

<_<

والسلام عليكم

أخي سوف تبكي عليك العيون * * * وتـسـأل عـنك دمـوع المـئـين

فإن جف دمعي سيبكي الغمام * * * يـرصـع قـبرك بــالـياسـمـيـن

أخـي مـا يـأسـنـا ولـن نيـأسـا * * * وما طال في القلب لبث الأسى

ومـا حـل أفــئــدة الــمــــؤمـن * * * سـوى أمـل في الـجنـان رسـى

أخي فانتظر ولتعش في غـد * * * سـيـنـبـثـق الأمـل الـسـرمـد

فـإن مـزقـتـنـا سني الــحـيـاة * * * فإنـا مع الـنصـر فـي مـوعــد

#2

يعني معقوله ولا أحد يرد :angry:

بدون أنه منتدي أشباح (h)

هذه مجرد مزحة :) أنتم الخير و البركة :)

وجدت الحل و الحمد لله

hInst = GetWindowLong(Me.hwnd, GWL_HINSTANCE)

و آسف على الإزعاج :)

أخي سوف تبكي عليك العيون * * * وتـسـأل عـنك دمـوع المـئـين

فإن جف دمعي سيبكي الغمام * * * يـرصـع قـبرك بــالـياسـمـيـن

أخـي مـا يـأسـنـا ولـن نيـأسـا * * * وما طال في القلب لبث الأسى

ومـا حـل أفــئــدة الــمــــؤمـن * * * سـوى أمـل في الـجنـان رسـى

أخي فانتظر ولتعش في غـد * * * سـيـنـبـثـق الأمـل الـسـرمـد

فـإن مـزقـتـنـا سني الــحـيـاة * * * فإنـا مع الـنصـر فـي مـوعــد

#4

السلام عليكم

شكراً يا /Asm4all

ولكن :: طلعنا من مطب طحنا بالثاني :)

الآن حصلت على مقبض البرنامج بواسطة الدالة GetWindowLong و التي تطلب منك مقبض النافذة .

والسؤال :

كيف يمكن أن أحصل على رقم الثريد Thread بعد أن حصلت على مقبض النافذة و مقبض البرنامج :rolleyes:

المسألة مقعدة شوي :wacko:

ولكني بالنهاية يجب أن أحصل على مقبض النافذة و مقبض نسخة البرنامج و رقم الثريد

فهل هذا ممكن ؟

أخي سوف تبكي عليك العيون * * * وتـسـأل عـنك دمـوع المـئـين

فإن جف دمعي سيبكي الغمام * * * يـرصـع قـبرك بــالـياسـمـيـن

أخـي مـا يـأسـنـا ولـن نيـأسـا * * * وما طال في القلب لبث الأسى

ومـا حـل أفــئــدة الــمــــؤمـن * * * سـوى أمـل في الـجنـان رسـى

أخي فانتظر ولتعش في غـد * * * سـيـنـبـثـق الأمـل الـسـرمـد

فـإن مـزقـتـنـا سني الــحـيـاة * * * فإنـا مع الـنصـر فـي مـوعــد

#5

مش عارف انت تقصد ايه بالتحديد لكن حسب ما فهمت فالداله CreateThread التي تقوم بعمل ثريد جديد تعطيك ال ID في العنوان الذي وضعته في آخر باراميتر lpThreadId

lpThreadId 
[out] Pointer to a variable that receives the thread identifier. If this parameter is NULL, the thread identifier is not returned.

و الداله نفسها ترجع مقبض الثريد

Return Values
If the function succeeds, the return value is a handle to the new thread.

If the function fails, the return value is NULL.

فأيهما تحتاج ؟ ام انك تقصد شيء آخر

#6

ما أريده هو :

دالة تعطيها مقبض النافذة

تعطيك رقم الثريد الخاص ببرنامجها

أعلم أنه هناك دالة تعطيك رقم الثريد الحالي

ولكن سؤالي هو : هل يمكن الحصول على رقم الثريد بواسطة مقبض النافذة ؟

عموماً //

يبدو أني فقدت الحماس ، فحتى رقم الثريد لن ينفعني فيما أريده .

ولتوضيح الأمر ، كنت أريد عمل برنامج لقراءة جميع الرسائل التي تمرر لجميع النوافذة .

ففكرت بالدالة SetWindowsHookEx

HHOOK SetWindowsHookEx(  int idHook,
         HOOKPROC lpfn,
         HINSTANCE hMod,
         DWORD dwThreadId
);

و التي تطلب مني

1- ثابت يحدد عمل الدالة

2- مؤشر وظيفة الـ Call Back

3 - مقبض نسخة البرنامج hInstance

4 - رقم الثريد ThreadId

أكتشفت بالأخير أن هذه الدالة لا تصلح لهذا العمل .

والآن وجدت في أحد مواقع الانترنت فئة مغلفة لهذا الأمر ( طبعاً هي تحت الدارسة الآن) :D

وحالما أفهم الحل سأعرضه بإذن الله في المنتدى .

ولكن السؤال الذي يطرح نفسه ::

هل أعرضها في قسم السي و أنا مبرمج VB :s أم في قسم الـ VB ؟

أم سنجد في القريب قسم يهتم بهذه اللغة المشتركة بين كثير من اللغات ؟

أخي سوف تبكي عليك العيون * * * وتـسـأل عـنك دمـوع المـئـين

فإن جف دمعي سيبكي الغمام * * * يـرصـع قـبرك بــالـياسـمـيـن

أخـي مـا يـأسـنـا ولـن نيـأسـا * * * وما طال في القلب لبث الأسى

ومـا حـل أفــئــدة الــمــــؤمـن * * * سـوى أمـل في الـجنـان رسـى

أخي فانتظر ولتعش في غـد * * * سـيـنـبـثـق الأمـل الـسـرمـد

فـإن مـزقـتـنـا سني الــحـيـاة * * * فإنـا مع الـنصـر فـي مـوعــد

#7

أخي / Asm4all

أبشرك وجدت الدالة التي أبحث عنها إنها GetWindowThreadProcessId

DWORD GetWindowThreadProcessId( HWND hWnd,
                                  LPDWORD lpdwProcessId
);

فهذه الدالة تعطيها مقبض النافذة التي تريد فتعطيك رقم الثريد :)

أشكرك من كل قلبي على مشاركاتك :D

أخي سوف تبكي عليك العيون * * * وتـسـأل عـنك دمـوع المـئـين

فإن جف دمعي سيبكي الغمام * * * يـرصـع قـبرك بــالـياسـمـيـن

أخـي مـا يـأسـنـا ولـن نيـأسـا * * * وما طال في القلب لبث الأسى

ومـا حـل أفــئــدة الــمــــؤمـن * * * سـوى أمـل في الـجنـان رسـى

أخي فانتظر ولتعش في غـد * * * سـيـنـبـثـق الأمـل الـسـرمـد

فـإن مـزقـتـنـا سني الــحـيـاة * * * فإنـا مع الـنصـر فـي مـوعــد

هذا الموضوع مغلق.

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…