-
проблема с длиной строки
struct NotifyIconData { public System.Int32 cbSize; // DWORD public System.IntPtr hWnd; // HWND public System.Int32 uID; // UINT public System.Int32 uFlags; // UINT public System.Int32 uCallbackMessage; // UINT public System.IntPtr hIcon; // HICON [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] public System.String szTip; // char[128] public System.Int32 dwState; // DWORD public System.Int32 dwStateMask; // DWORD [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public System.String szInfo; // char[256] public System.Int32 uTimeoutOrVersion; // UINT [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] public System.String szInfoTitle; // char[64] public System.Int32 dwInfoFlags; // DWORD //GUID guidItem; > IE 6 }
NotifyIconData nid = new NotifyIconData();
получаю Pointer на данные
nid = (NotifyIconData)Marshal.PtrToStructure(cmdPtr, typeof(NotifyIconData));
nid.szTip содержит только один символ. :(
как с этим бороться?
-
poproboval sdelat' prochitat' stroku s mesa v pamayti gde ona nachinaetsya:
nid.szTip = Marshal.PtrToStringAnsi((IntPtr)(cmdPtr.ToInt32() + 24), 128);
odnako nid.szTip = T\0e\0x\0t\0\0\0\0\0\0..
t.e. vmesto slova "Text" poluchil s \0 ... chto zhe ne tak?
-
А почему Вы не пользуете компонент всех времён народов NotifyIcon, который есть во фреймворке ещё, если мне не изменяет склероз, с первой версии?
-
to: Lamer@fools.ua voobsche to ya ne pitayus' otpravit' NTIFYICONDATA, ya stavlyu hook i lov'yu eti soobscheniya prihodyaschie v Shell_TrayWnd. Mne ne nuzhno dobavit' Icon v systemtray.
problema vooscbhem takaya. na skol'ko ya ponyal dlya kazhdogo simvola videlenno 2 bayta
t.e. mne nuzhno perevesti char()={T,\0} v chitaemuyu stroku sring "T". Kakie voobsche est' biblioteki dlya raboti s tekstom v .NET?
-
The character type used with ByValTStr is determined by the System.Runtime.InteropServices.CharSet argument of the System.Runtime.InteropServices.StructLayoutAttribute applied to the containing structure. © MSDN
Т.е. попробуйте применить StructLayout к NotifyIconData с соответствующим CharSet (CharSet.Ansi или CharSet.Unicode).
-
to:Lamer@fools.ua
Vi bili pravi, primenenie StructLayout pomoglo reshit' vse problemi. Spasiba
|