PDA

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



ArianProg
چهارشنبه 23 آذر 1390, 19:20 عصر
با سلام من با تابع GetActiveWindowTitle() میتونم عنوان پنجره های فعال به زبان انگلیسی رو تو تکست باکس ببینم اما برای زبان فارسی همش علامت سوال میشه (؟؟؟؟)

چیکار کنم ؟

vb.net.33
چهارشنبه 23 آذر 1390, 20:26 عصر
با سلام من با تابع GetActiveWindowTitle() میتونم عنوان پنجره های فعال به زبان انگلیسی رو تو تکست باکس ببینم اما برای زبان فارسی همش علامت سوال میشه (؟؟؟؟)

چیکار کنم ؟

کد نویسی شما چطوری هست؟

ArianProg
پنج شنبه 24 آذر 1390, 00:38 صبح
کد نویسی شما چطوری هست؟

یک فانکشن که تعریف میکنم بعد ازش استفاده میکنم به اضافه سایر ایمپورت های دیگر.

Private Function GetActiveWindowTitle() As String


شما متوجه سوال من شدین؟ که میخوام چی کار کنم ؟

vb.net.33
پنج شنبه 24 آذر 1390, 01:58 صبح
یک فانکشن که تعریف میکنم بعد ازش استفاده میکنم به اضافه سایر ایمپورت های دیگر.

Private Function GetActiveWindowTitle() As String


شما متوجه سوال من شدین؟ که میخوام چی کار کنم ؟

خوب منظور من هم همون فانکشن هست دیگه.این به درد من نمیخوره که شما می گی از یه تابع استفاده کردم.من گفتم کدتو بگو تا کمکت کنم.بعد شما انگار داری مخفی بازی در می آری!!!

ArianProg
پنج شنبه 24 آذر 1390, 08:45 صبح
خوب منظور من هم همون فانکشن هست دیگه.این به درد من نمیخوره که شما می گی از یه تابع استفاده کردم.من گفتم کدتو بگو تا کمکت کنم.بعد شما انگار داری مخفی بازی در می آری!!!

مخفی بازی کدومه ! من منظور شما رو کامل متوجه نشدم. بفرمایید اینم کد کامل :

Private Declare Function GetForegroundWindow Lib "user32.dll" () As Int32
Private Declare Function GetWindowText Lib "user32.dll" Alias "GetWindowTextA" (ByVal hwnd As Int32, ByVal lpString As String, ByVal cch As Int32) As Int32
Dim abc As String = Nothing

Private Function GetActiveWindowTitle() As String
Dim aba As String
aba = New String(Chr(0), 100)
GetWindowText(GetForegroundWindow, aba, 100)
aba = aba.Substring(0, InStr(aba, Chr(0)) - 1)
Return aba
End Function

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If abc <> GetActiveWindowTitle() Then

Textbox1.Text = Textbox1.Text + vbNewLine & "[" & GetActiveWindowTitle() & "]:" + vbNewLine
abc = GetActiveWindowTitle()
End If
End Sub

البته حدس میزنم گیر کار اینجا باشه درسته ؟
aba = aba.Substring(0, InStr(aba, Chr(0)) - 1)
با اینجا :
aba = New String(Chr(0), 100)

vb.net.33
پنج شنبه 24 آذر 1390, 14:12 عصر
خوب شما می خواهید این کار رو خارج از برنامتون انجام بدین؟ یا فرم های داخل برنامتون؟

ArianProg
پنج شنبه 24 آذر 1390, 14:23 عصر
خوب شما می خواهید این کار رو خارج از برنامتون انجام بدین؟ یا فرم های داخل برنامتون؟

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

vb.net.33
پنج شنبه 24 آذر 1390, 14:40 عصر
برنامتون درست کار میکنه.اشکال از شناسوندن فونت فارسی تو کامپیوتره احتمالا


79236

ArianProg
پنج شنبه 24 آذر 1390, 15:20 عصر
برنامتون درست کار میکنه.اشکال از شناسوندن فونت فارسی تو کامپیوتره احتمالا


79236

فونت های من مشکلی ندارن و من به راحتی با اون ها تو وورد و هرجای دیگه فارسی تایپ میکنم.

برای من کار نمیکنه . اینم تصویرش :

شما میدونی مبدل یونیکد چطوریه ؟

ArianProg
پنج شنبه 24 آذر 1390, 15:28 عصر
ببین شما تو نوت پد وقتی فارسی می نویسی و میخوای سیو کنی میگه اگه میخوای اطلاعات درست سیو بشه باید یونیکد باشه اگه یونیکد سیو نکنی و به طریق


پیشفرض یعنی ANSI سیو کنی وقتی فایل تکست رو باز کنی میبینی همش به علامت سوال تبدیل شده.

vb.net.33
پنج شنبه 24 آذر 1390, 15:32 عصر
یک سوال شما وقتی یه فیلم تو KMP می بینی که زیر نویس فارسی داره اون رو به درستی نشون میده یا ایراد داره؟

ArianProg
پنج شنبه 24 آذر 1390, 15:36 عصر
به درستی نمایش داده میشه. تمام و کامل. میدونم منظورتون تنظیمات تو کنترل پنل هستش که همش درسته.

ali reza mansoori 2
یک شنبه 28 خرداد 1391, 17:25 عصر
شاید این برنامه کار دوستان رو راه بندازه

M.KH-SH
یک شنبه 28 خرداد 1391, 19:45 عصر
دوست عزیز شما زمانی که نامی رو دریافت میکنین قبل از نمایش (در زمان دریافت) اونو تنها با استفاده از encoding etf8 میتونین تماشا کنین بدون اینکه به ??? تبدیل بشن

arash.arya43
دوشنبه 10 فروردین 1394, 10:59 صبح
مخفی بازی کدومه ! من منظور شما رو کامل متوجه نشدم. بفرمایید اینم کد کامل :

Private Declare Function GetForegroundWindow Lib "user32.dll" () As Int32
Private Declare Function GetWindowText Lib "user32.dll" Alias "GetWindowTextA" (ByVal hwnd As Int32, ByVal lpString As String, ByVal cch As Int32) As Int32
Dim abc As String = Nothing

Private Function GetActiveWindowTitle() As String
Dim aba As String
aba = New String(Chr(0), 100)
GetWindowText(GetForegroundWindow, aba, 100)
aba = aba.Substring(0, InStr(aba, Chr(0)) - 1)
Return aba
End Function

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If abc <> GetActiveWindowTitle() Then

Textbox1.Text = Textbox1.Text + vbNewLine & "[" & GetActiveWindowTitle() & "]:" + vbNewLine
abc = GetActiveWindowTitle()
End If
End Sub

البته حدس میزنم گیر کار اینجا باشه درسته ؟
aba = aba.Substring(0, InStr(aba, Chr(0)) - 1)
با اینجا :
aba = New String(Chr(0), 100)
داداش می دونم از تاریخ پست گذشته برای بازدید کنندگان جدید میگم کد شما رو من تست زدم و به خوبی کار میکرد مشکل از ویندوزتون هست:بوس: