P
PNav
Task:
To disable the SIP menu's "Options..." sub menu item on PocketPC 2003,
Windows Mobile 5.0 PocketPC and Windows Mobile 6.0 Professional.
Solution:
The application has been created using C# as a smart device application. We
have used PInvoke wherever Win32SDK APIs have been called. We have subclassed
the SIP window in our application using GetWindowLong(...) and
SetWindowLong(...). The window procedure is in our application; that extends
the SIP window's functionality. We are handling the WM_INITMENUPOPUP message
for the SIP's "Options..." submenu, and we're disabling the menu item. This
works. The other messages are all re-routed to the original Window procedure
of the SIP button using CallWindowProc(...) passing the original windows
procedure's function pointer.
Problem:
On subclassing, if we navigate into: Start -> Settings, then the PocketPC
emulator freezes and becomes unresponsive. While debugging, we can't stop
debugging the application from Visual Studio. The only way to regain control
is by resetting the emulator. We are using the PocketPC 2003 SE emulator on
Windows 2003 Server. Interestingly, the same application runs fine on the
PocketPC 2003 SE emulator that ships with WindowsXP. Setting the
CeSetThreadPriority(...) to 249, makes the application run intermittently, on
the PocketPC2003 SE emulator, i.e. it runs perfectly at random intervals. So,
that makes us suspect that it might be a threading issue.
We are using SetProcPermissions(0xFFFFFFFF) in the application's
constructor. Without this, the application's main thread exits when we
navigate into Start -> Settings. The above scenario in the problem is with
the SetProcPermissions(...) set to 0xFFFFFFFF.
To disable the SIP menu's "Options..." sub menu item on PocketPC 2003,
Windows Mobile 5.0 PocketPC and Windows Mobile 6.0 Professional.
Solution:
The application has been created using C# as a smart device application. We
have used PInvoke wherever Win32SDK APIs have been called. We have subclassed
the SIP window in our application using GetWindowLong(...) and
SetWindowLong(...). The window procedure is in our application; that extends
the SIP window's functionality. We are handling the WM_INITMENUPOPUP message
for the SIP's "Options..." submenu, and we're disabling the menu item. This
works. The other messages are all re-routed to the original Window procedure
of the SIP button using CallWindowProc(...) passing the original windows
procedure's function pointer.
Problem:
On subclassing, if we navigate into: Start -> Settings, then the PocketPC
emulator freezes and becomes unresponsive. While debugging, we can't stop
debugging the application from Visual Studio. The only way to regain control
is by resetting the emulator. We are using the PocketPC 2003 SE emulator on
Windows 2003 Server. Interestingly, the same application runs fine on the
PocketPC 2003 SE emulator that ships with WindowsXP. Setting the
CeSetThreadPriority(...) to 249, makes the application run intermittently, on
the PocketPC2003 SE emulator, i.e. it runs perfectly at random intervals. So,
that makes us suspect that it might be a threading issue.
We are using SetProcPermissions(0xFFFFFFFF) in the application's
constructor. Without this, the application's main thread exits when we
navigate into Start -> Settings. The above scenario in the problem is with
the SetProcPermissions(...) set to 0xFFFFFFFF.