PDA

View Full Version : سوال: گرفتن عنوان پنجره فعال



rezamansori
پنج شنبه 18 شهریور 1389, 22:15 عصر
من مي خواهم عنوان پنجره فعال رو بگيرم.
اين كد با وي بي 6 جواب داد:


Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Sub Timer1_Timer()
Dim a As Long
Dim txt As String
a = GetForegroundWindow
txt = String(255, " ")
GetWindowText a, txt, 255
Me.Caption = txt
End Sub


من كد سي شارپش رو اينجوري نوشتم اما جواب نداد :





[DllImport("User32")]
public static extern long GetForegroundWindow();
[DllImport("User32")]
public static extern long GetWindowTextA(long hwnd, string lpString, long cch);
private void timer1_Tick(object sender, EventArgs e)
{
string s = new string(' ', 255);
GetWindowTextA(GetForegroundWindow(), s, 255);
this.Text = s ;
}


لطفا راهنمايي كنيد.

Saman_12
پنج شنبه 18 شهریور 1389, 22:45 عصر
اشتبا هتون این جاست که کد رو تبدیل نکردید.


[DllImport("user32")]
private static extern int GetForegroundWindow();
[DllImport("user32")]
private static extern int GetWindowTextA(int hwnd, string lpString, int cch);

rezamansori
پنج شنبه 18 شهریور 1389, 23:03 عصر
نفهميدم. منظور شما اينه كه بجاي Long نوع int رو بنويسم و بس؟
بايد بگم تابع اول كار ميكنه و هندل رو بر مي گردونه اما تابع دومي جواب نميده.
ممنون ميشم اگه بيشتر توضيح بدين.

Saman_12
پنج شنبه 18 شهریور 1389, 23:26 عصر
بله Long وبی 6 معادل int سی شارپپ هست.(و همینطور Integer VB.NET)(کد کار نمی کنه دلیش رو هم نمی دونم از API SendMessage هم استفاده کنید ببینید همین جوره یا نه.)

rezamansori
پنج شنبه 18 شهریور 1389, 23:32 عصر
من اولین بارمه که دارم توابع API رو می نویسم و استفاده می کنم. می خواستم بدونم آیا کتابخانه ای هست که توابع رو داشته باشه و بشه مستقیما آن ها رو تو سی شارپ کپی کرد و استفاده نمود؟

Saman_12
پنج شنبه 18 شهریور 1389, 23:36 عصر
من خودم VB.NET کار میکنم و همینجوری از روی بیکاری نشتم توی خونه دارم سی شارپ یاد میگرم.
اگه خواستین بگین یم مجموعه به زبان VB6 براتون آپلود کنم تبدیلش کاری نداره دو تا تبدیل کنی یاد می گیری.

rezamansori
پنج شنبه 18 شهریور 1389, 23:45 عصر
من کتابخونه برا وی بی 6 دارم اما بلد نیستم کداشو به سی شارپ تبدیل کنم.
اگه امکانش هست یه مقاله برا این کار معرفی کنید.
اگه یه برنامه بنویسی که API های وی بی 6 رو به سی شارپ تبدیل کنه ممنون میشم.

Saman_12
پنج شنبه 18 شهریور 1389, 23:58 عصر
من یک پیشنهاد بهتون میدم :
اول یک پروژه VB.NET بسازین بعد هم به محیط کد نویسیش برین حالا از منوی Tools گزینه ی Upgrade Visul Basic 6 Cod رو انتخواب کنید حالا کد VB6 رو وارد کنید و OK حالا معدلش رو براتون مینویسه.(یک نرم افزار تبدیل کد های VB.NET به C#‎ دانلود کنید و اون کد رو به سی شارپ تبدیل کنید. تموم شد.
اگه تونستم یک برنامه برای این کار مینویسم.

rezamansori
دوشنبه 22 شهریور 1389, 11:38 صبح
دوستان حل شد!
فقط بجای نوع String از StringBuider استفاده کردم.