• jonni © (15.10.06 22:07) [0]
    проблема с длиной строки

    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 содержит только один символ. :(

    как с этим бороться?
  • jonni © (16.10.06 00:34) [1]
    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?
  • Lamer@fools.ua © (16.10.06 10:38) [2]
    А почему Вы не пользуете компонент всех времён народов NotifyIcon, который есть во фреймворке ещё, если мне не изменяет склероз, с первой версии?
  • jonni © (16.10.06 12:48) [3]
    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?
  • Lamer@fools.ua © (16.10.06 20:47) [4]
    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).
  • jonni © (17.10.06 01:55) [5]
    to:Lamer@fools.ua

    Vi bili pravi, primenenie StructLayout pomoglo reshit' vse problemi.
    Spasiba
Есть новые Нет новых   [134430   +2][b:0][p:0]