PDA

View Full Version : حرفه ای: استفاده از توابع API در ویندوز سرویس



ferankyy
جمعه 24 شهریور 1391, 16:56 عصر
با سلام خدمت اساتید

من یه سرویس نوشتم که می بایست با استفاده از تابع FindWindow هندل یه پنجره رو برگردونه

مشکل اینجاست که همیشه هندل رو صفر بر میگردونه ، ولی داخل WinApp کار میکنه .

hamednazarzadeh
شنبه 25 شهریور 1391, 11:00 صبح
از مدیران تالار خواهش میکنم کمک کنید

ferankyy
یک شنبه 26 شهریور 1391, 20:07 عصر
یعنی هیچکس نمیدونه دلیلش چیه ؟!!!!!!!!

ali_habibi1384
دوشنبه 27 شهریور 1391, 07:50 صبح
خب ابتدا API رو بايد الصاق كنيد و سپس نام پنجره اي كه ميخوايد:

[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

IntPtr hWnd = (IntPtr)FindWindow(windowName, null);

اين لينك رو ببينيد (http://stackoverflow.com/questions/820909/get-applications-window-handles)

ferankyy
دوشنبه 27 شهریور 1391, 15:32 عصر
خب ابتدا API رو بايد الصاق كنيد و سپس نام پنجره اي كه ميخوايد:

[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

IntPtr hWnd = (IntPtr)FindWindow(windowName, null);

اين لينك رو ببينيد (http://stackoverflow.com/questions/820909/get-applications-window-handles)
با سلام
من طریقه کار با FindWindow رو بلدم ، مشکل من استفاده از این تابع در سرویس های ویندوزی هست ، چون سرویس های ویندوزی در ویندوز ویستا به بالا روی Session صفر اجرا میشوند ولی برنامه های ویندوز اپلیکیشن روی Session یک اجرا میشوند و به همین دلیل وقتی از تابع Findwindow داخل سرویس ها استفاده میکنیم نمیوتنه هندل پنجره ای که در Session دیگر اجرا هست رو برگردونه . همینطور که وقتی برنامه ای مثل Notepad رو از داخل یک سرویس اجرا میکنیم برنامه اجرا شده روی session صفر هست و قابل دیدن در دسکتاپ نیست ولی در لیست پروسس ها هست .

ferankyy
چهارشنبه 29 شهریور 1391, 13:04 عصر
خواهش میکنم کمک کنید ، ضروریه