블랙잭이야기2008. 3. 16. 16:41

북미의 블랙잭 SGH-i600 에대해서 간단하게 정리된 내용입니다. 국내 블랙잭에는 안되는 기능들도 보이네요.

More Samsung SGH-i600 Blackjack Info, Tips, Tricks and NES Emulation

October 8th, 2007 . by Paul McGuinness

samsung i600 samsung sgh i600

Specification: Samsung SGH-i600 is a HSDPA/Tri-band GSM/GPRS/EDGE Class 10/WiFi Windows Mobile 5 smartphone and with a  QWERTY keyboard, 1.3 Megapixel camera/camcorder, Music player, Bluetooth, Micro SD slot, 218MB ROM and 64MB RAM - Samsung Spec Sheet: [Link]

Official Samsung SGH-i600 User Manual - [Link] - PDF 2.2MB


Hello again.It seems my ‘hacks’ for the i600 are going down a treat, so I thought I would list a few more for everyone…In the UK, the Samsung SGH-i600 (Called the ‘Blackjack’ in the USA) is only provided via Orange. Unfortunately this means that it has the horrible Orange branding [crippleware], and is only running Windows Mobile 5.

The Samsung site allows you to upgrade from WM5 to Windows Mobile 6 via this link: http://www.samsungmobile.com/promotion/i600/index.jspUnfortunately… the UK is not listed (to to Orange… Grrrr…), but if you are from one of the following countries, you can slide on over there and grab some WM6 (well… WM5.2 in new clothes!); Belgium, Bulgaria, Demark, Estonia, Finland, France, Iceland, Latvia, Lithuania, Netherlands, Norway, Russia, Sweden, Switzerland, and the Ukraine.

Apparently, you can override your i600 to another country + language (make sure it’s one you can read!) and then download the appropriate update, get WM6 and then change the country settings back. This is all controlled by the service menu by dialling *#1546792*# and then using the preconfig password *#81230*# - THIS WILL WIPE YOUR PHONE so don’t do this without making a full backup first! Full instructions over at vowe.net; http://vowe.net/archives/008792.html

Keyboard Shortcuts (For the European Model)

Function
Details

Task Manager
Hold Down the [Home] button to show the task manager

Quick Links
Hold in the [Jog Dial] to brings up a editable list of Shortcuts

Quicklist
Pressing the power button brings up the quicklist (Change to Silent etc…)

Voice Assist
Press and hold the “volume up” button on the left side of the phone, near the top to bring up the voice recorder

Custom
You can set the Back button on the side to open whatever app you want when held for a few seconds (by default is ‘Camera’)

Quick “KeyLock” 
Hold down the [End] Key for a few seconds

Quick “Silent Mode”
Hold down then ‘#’ key to toggle Silent mode.

Numeric in TXT
Quickly enter numbers without changing input mode by holding down the according button for a couple of seconds

Page Up/Down in IE
When browsing the internet using Internet Explorer Mobile Edition, use T and V to scroll Page Up / Down

I have found lots of information and hacks here: http://i607.org/ the SGH-i607 is the USA version, but many of the ‘hacks’ work on the European version of this phone

Hidden Applications

Whilst rooting around in the \Windows folder on my phone, I found a series of applications that don’t normally show on the menu. Here is a list of the more interesting ones I found. If you want to use them on a frequent basis, use the ActiveSync explorer to right-click-drag and create a shortcut in the \Start Menu folder for any of these apps.

EXE Name
Details

CamTest_Int, CamTest_Ext
Turns on and shows the Internal (front) or External (rear) cameras. Interestingly, this takes <1sec to initialise, so why does the camera app take so long to load!?

cprog
Appears to show the last call details

instmsgr
MSN Instant Messenger (You could setup a quick shortcut to this instead of having to go through the Internet / MSN / Messenger route…

MySimMessage
Shows SMS Messages that are on the SIM (as opposed to on the Phone)

Playsound
MP£ Test app that allows you to test the Speaker, Earpiece and Headset - Handy for checking your Bluetooth headsets etc

RTCViewer
Shows the internal RTC (Real Time Clock)

SoundTest
Haven’t quite worked this one out… it appears to be a more advanced version of PlaySound

wrlsmgr
Wireless Manager - Top Tip: Set a shortcut to startmenu, then assign to a speed dial (Press Menu when the icon is selected, then choose ‘1 - Menu Shortcut’) - I’ve set mine as speedfial 9, so I just hold down the ‘9′ key for a couple of second to bring up the Wireless manager

TestMode
Hidden App: You need to create a shortcut to the Start Menu to access this, or use something like Resco File Explorer to see it.

This shows *lots* of Engineer stuff (3G, UTMS, GSM Cell Info etc), and appears to let you do (possibly) damaging things to your phone. Only use this if you know what you are doing!


NES Emulation

I found most of this information on i607.org’s NES Page [Link], but here is the simple guide for the UK Version of the Samsung SGH-i600

  1. Download Pocket Nester Plus - http://mobile.surrealnetworks.com/Dash%20Applications/SN%20PocketNesterPlus%20D.cab
  2. Download either All the ROM’s as a 40Mb CAB File (http://surrealnetworks.net/NES%20ROMs/393NESROMS.cab), or the ‘50 Classics’ as a 10Mb CAB File (http://surrealnetworks.net/NES%20ROMs/50%20NES%20Classics.cab) or individual games [HERE]
  3. Install Pocket Nester
  4. Install the ROMS (to your Memory card!)
  5. Install the Pocket Nester Update [Pocket Nester Update] by copying the .exe over the top of the one in the \Program Files\PocketNester (You only need this if you already have an older version)
  6. Open the game, go into Preferences and tick “Associate .NES Files”, also set up all the keys (Try to make them memorable!)
  7. The Open ROM option does not work unless you install tgetfile.dll… this is time-limited, so I suggest just browsing to the ROM Folder and select the Game you want. Nester will automatically load. The ROM’s should be located in \Storage Card\My Documents\ROMs

When playing a game, if you can’t seem to get it to exit, hold down the HOME key, this will bring up the menu.

CommsBlog » Blog Archive » More Samsung SGH-i600 Blackjack Info, Tips, Tricks and NES Emulation

Posted by krsuncom
개발이야기2008. 3. 15. 09:54

 

Windows Mobile 2003 Software for Smartphone Second Edition ...

- [ 이 페이지 번역하기 BETA ]

<wap-provisioningdoc> <characteristic type="Registry"> <characteristic type="HKCU\Software\Microsoft\Home\Keys"> <characteristic type="113"> <parm name="Open" value="\Windows\camera.exe" datatype="string"/> </characteristic> ...
msdn2.microsoft.com/en-us/library/aa457941.aspx - 19k - 저장된 페이지 - 유사한 페이지 - 노트에 저장하기

[樂] 즐거운 세상 :: m4500 레지스트리[펌] - 오전 9:42

[HKEY_CURRENT_USER\Software\Microsoft\Home\Keys\112]로가서 실행할 파일 경로를 지정해줍니다. 예를들어 .... HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Cache = "\Windows\Profiles\guest\Temporary Internet Files" ...
rockion.tistory.com/161 - 54k - 저장된 페이지 - 유사한 페이지 - 노트에 저장하기

Any way to oneclick a new sms? [Archive] - xda-developers

- [ 이 페이지 번역하기 BETA ]

You should now have: HKCU\Software\Microsoft\Home\keys Under this new key, create another key called "113":- ... Now under HKCU\Software\Microsoft\Home\keys\113, edit the "Default" Datatype "String" value and put: Create Msg (or ...
forum.xda-developers.com/archive/index.php/t-319753.html - 8k - 저장된 페이지 - 유사한 페이지 - 노트에 저장하기

Samsung BlackJack Users :: View topic - Keys with WM6 - 오전 9:46

- [ 이 페이지 번역하기 BETA ]

[HKCU\Software\Microsoft\Home] Create a key named 'Keys ' in here, and then ANOTHER key named '113' in ?Keys?. Next, create the following string values: ... [HKEY_CURRENT_USER\Software\Microsoft\Home\Keys\113] default = Speed Dial ...
www.blackjackusers.com/viewtopic.php?p=16783&sid=5d4716ec3f98856cba08d7ff5d955b50 - 24k - 저장된 페이지 - 유사한 페이지 - 노트에 저장하기

All Blogs by Date

- [ 이 페이지 번역하기 BETA ]

HKCU/Software/Microsoft/Home/Keys/113/IconOffset. Personally I changed it to launch \Windows\Gridview.exe which I believe is the default application launcher used by Microsoft on the Start button. I was actually going to put this on the ...
toblogornottoblog.co.uk/blog/latest/1/full.php?order=d&page=1&mode=f - 54k - 저장된 페이지 - 유사한 페이지 - 노트에 저장하기

TotW: Change the function of the right soft key - MoDaCo - 오전 9:48

- [ 이 페이지 번역하기 BETA ]

Posts: 4507 Joined: 7th August 2003 From: Legazpi, Philippines Member No.: 12251 Device(s): ASUS P525. Just rename 'Keys' (HKCU\Software\Microsoft\Home\Keys) to say 'KeysX' (IMG:http://www.modaco.com/style_emoticons/default/smile.gif) ...
www.modaco.com/content-page/208536/TotW-Change-the-function-of-the-right-soft-key/page/60/ - 148k - 저장된 페이지 - 유사한 페이지 - 노트에 저장하기

Terminate Program - MoDaCo

- [ 이 페이지 번역하기 BETA ]

I think you can assign it to right softkey (HKCU\Software\Microsoft\Home\Keys\113\Open) Another option would be to do it with Mortscript using the Kill command. On your script you can specify a process or several processes to terminate. ...
www.modaco.com/content/HTC-Tornado-Faraday-Variants-Tornado-MoDaCo-com/263419/Terminate-Program/ - 58k - 저장된 페이지 - 유사한 페이지 - 노트에 저장하기
www.modaco.com 검색결과 더보기 »

smartphone developer Dynamic change of homescreen's softkey - 오전 9:38

- [ 이 페이지 번역하기 BETA ]

On smartphone, this can be hardcoded in registry by setting HKCU/Software/ Microsoft/Home/Keys/112 or 113 for the left and right softkey. On i600 samsung smartphone (windows mobile 5.0), the "carousel" homescreen plugin changes the ...
www.eggheadcafe.com/software/aspnet/30291141/dynamic-change-of-homescr.aspx - 31k - 저장된 페이지 - 유사한 페이지 - 노트에 저장하기

oldSAP Windows Mobile Freeware

- [ 이 페이지 번역하기 BETA ]

HKCU\Software\Microsoft\Home\keys\113\Open and change the string value to value to: \Storage Card\Program Files\Mortscript\RSK.mscr or use GPCarreon's Right Tweaker Just edit the mscr files with a text file editor to suite your taste. ...
oldsap.blogspot.com/2006/09/right-soft-key-menu-script.html - 110k - 저장된 페이지 - 유사한 페이지 - 노트에 저장하기

2007-10-05 - ata3の日記

\Windows\ArcMSG.exeを削除する. ボタンにアプリを割り当て. HKCU\Software\Microsoft\Home\Keys\113:Default=表示名. HKCU\Software\Microsoft\Home\Keys\113:Open="アプリのパス". Voice通常押し:Short_POC.lnk. Voice長押し:Long_POC.lnk ...
d.hatena.ne.jp/ata3/20071005 - 20k - 저장된 페이지 - 유사한 페이지 - 노트에 저장하기

HKCU/Software/ Microsoft/Home/Keys/ - Google 검색

Posted by krsuncom
링크2008. 3. 4. 14:37

누가 알려준 사이트인데 집에 47 full-hd tv 불량화소를 없애는거같은데...

집에가서 한번 해봐야지..

애플군의 Blog :: 불량화소를 제거해보자~~!

Posted by krsuncom
스크랩/번역2008. 3. 1. 13:09

Smartphone & Pocketpc 에서 선정한 2007 최고의 스마트폰 소프트웨어들

Best Smartphone Software Awards 2007 

Winners and Finalists: Smartphone

Smartphone: Communication
Bluetooth
Instant Messaging & IRC
Phone Tools and Synchronization

Smartphone: Emulators
Computer Emulators & Interpreters
Desktop Game Console Emulators
Handheld Game Console Emulators

Smartphone: Games
Action Games
Board Games
Casino and Card Games
Classic Arcade
Color Matching
Puzzle Games
Racing Games
RPG / Adventure Games
Scrolling Shooters
Simulation Games
Sports Games
Strategy Games

Smartphone: Information Managers
List & database managers
PIMs
Secure Information Managers

Smartphone: Internet
Web Browsing

Smartphone: Multimedia
Audio
Graphic
Multimedia Tools
Video

Smartphone: Text and Reference
Dictionaries
Document Viewers
Educational
Feed Reader

Smartphone: Travel
Travel Tools

Smartphone: Utilities
Calculators
File Management
Networking and Remote Desktop
Notes
Screen Capture and Display
System and Registry
Task Management

Communication

Bluetooth

BlueMusic    
Redirects all audio from your mobile device to your Bluetooth headset. Listen to MP3s, Podcasts, or Audio Books directly from your Pocket PC without using any cables. It can also be used to get GPS locations or VoIP phone calls by using the microphone over Bluetooth. Also supports after-phone-call resume, auto-speakerphone, and many other options.
Developer: Teksoft SRL
Web: www.teksoftco.com


Bluezard    
An application for Windows Mobile Pocket PCs and Smartphones that extends Bluetooth features and functions. It’s a complete Bluetooth connection manager with other functions.
Developer: WM-Soft
Web: www.wm-soft.com/


Instant Messaging & IRC

Agile Messenger    
Software-based Push-to-Talk and Instant Multimedia Messaging over the public networks of MSN, ICQ, AIM, and Yahoo! With over 1 million users users worldwide, Agile Messenger is the largest deployed mobile instant messaging community on the globe.
Developer: Agilemobile.com Limited
Web: www.agilemobile.com


IM+ Mobile Instant Messenger    
An "all-in-one" universal Instant Messenger for MSN, ICQ, AOL, and Yahoo for the Pocket PC. It works by making a direct connection to the supported services without any "gate" in the middle and connects you to your favorite services as a full-rights user. You get all the messages and events immediately just as if you were connected with the standard client.
Developer: SHAPE Services Ltd.
Web: www.shapeservices.de


Mundu IM    
Allows users to chat with their IM contacts on different IM services, including AIM, MSN, Yahoo!, ICQ, and Google Talk or Jabber on a single user-friendly interface. Capabilities include: photo blogging and video sharing, file and music sharing, e-mail notification, and support for major mobile platforms.
Developer: Geodesic Information Systems Ltd.
Web: messenger.mundu.com


Phone Tools and Synchronization

Jeyo Mobile Companion    
An Outlook-style SMS Text Messaging client for Windows; works with MS Smartphone and PocketPC Phone Edition. Provides the ability to flexibly manage text messaging from your Windows desktop.
Developer: Jeyo, Inc
Web: www.jeyo.com


Spb GPRS Monitor    
Measures the amounts of data transfers via your GPR, WiFi, CDMA, or GSM network connection and calculates the cost. It monitors all data transfers you perform and calculates the cost of your GPRS usage, taking into account your service plan details such as inclusive data amount, data block size, etc.
Developer: Spb Software House
Web: www.spbsoftwarehouse.com


VITO VoiceDialer for Smartphone    
Enables voice dialing using previously learned voice commands assigned to phone numbers in the Contacts database. It supports all languages, all voices and all Smartphone models.
Developer: VITO Technology
Web: vitotechnology.com


Emulators

Computer Emulators & Interpreters

FuseSP    
A Sinclair Spectrum emulator.
Developer: Keith Orbell
Web: www.aooa27.dsl.pipex.com/FuseSP.htm


PocketDOS    
MSDOS 6.22-compatible DOS program for Pocket and Handheld PCs. Virtual PC software environment for your PDA that allows you to run a DOS operating system and have instant access to many DOS applications on your PDA, while simultaneously allowing the use of the PDA's native applications. Also allows file sharing between the PDA's native applications and DOS applications.
Developer: PocketDOS
Web: www.pocketdos.com


ScummVM    
A program which allows you to run certain classic graphical point-and-click adventure games assuming that you already have their data files. It replaces the .exe files shipped with the game, allowing you to play them on systems for which they were never designed.
Developer: ScummVM
Web: scummvm.sourceforge.net/


Desktop Game Console Emulators

Finalburn Alpha    
A FinalBurn emulator.
Developer: masterall
Web: www.modaco.com/index.php?showtopic=247894


Masterall’s PocketSNES port    
A SNES emulator.
Developer: masterall
Web: www.modaco.com/index.php?showtopic=247894


Pocket Nester Plus    
An NES emulator.
Developer: masterall
Web: www.modaco.com/index.php?showtopic=247894


Handheld Game Console Emulators

gnuboy SP    
A GameBoy emulator for the Smartphone that's compatible with GameBoy and GameBoy Color. Supports full GameBoy resolutions. Sound can be turned on/off. Keys are fully configurable. Layouts (and all other settings) are saved with the game state for each game individually.
Developer: Surreal Services
Web: www.surrealservices.co.uk


SmartGear    
SmartGear is a handheld and console emulator which supports GameBoy, GameGear, MasterSystem, NES, Genesis, and PC-Engine/TurboGrafx-16. It runs on all Pocket PC and SmartPhone devices which runs WM2003 or newer.
Developer: BitBank Software
Web: www.bitbanksoftware.com


Games

Action Games

3D Constructo Combat    
Play this true 3D, addicting game creating as many buildings as possible while battling others! Unlock up to 10 maps.
Developer: Concrete Software, Inc.
Web: www.concretesoftware.com


3D Lawn Darts    
The classic game of lawn darts for your mobile device. Includes fun and challenging 3D characters and multiplayer functionality. It also has new camera motion sensing technology. If your device has a camera, you simulate a real throw with your device like you are throwing a real dart.
Developer: Concrete Software, Inc.
Web: www.concretesoftware.com


Eclipse: First Wave    
A shoot-em-up action game that brings classic arcade shooter action to the Smartphone. Pilot one of two different ships through wave after wave of enemies, across 7 varied levels through space and across landscapes. Compatible with: SPV, E100, E200, Motorola MPX-200, Qtek 7070, Qtek 8080, Samsung i600, i-mate Smartphone, and i-mate Smartphone 2.
Developer: Alien Invention
Web: www.alieninvention.com


Board Games

4Connect for Smartphone    
Prepare to challenge your mind with a new brain teaser, our interpretation of the age old classic Connect 4. The first player to get four checkers lined up in a row in any direction wins the game. Play against a friend locally or over a Bluetooth / Wi-Fi network, or pit your wits against a computer player
Developer: 4Pockets.com
Web: www.4pockets.com


Multiplayer Championship Backgammon    
Backgammon with stunning graphics, powerful AI opponents, multiplayer gaming over the Internet, more. Also: built-in chat, hotseat games, and career mode. Real Dice brings you another multiplayer breakthrough: the world's first, true cross-platform mobile Backgammon experience. Palm vs. Windows Mobile vs. Smartphones vs. Desktops. Go on, roll the dice.
Developer: Real Dice
Web: www.realdice.com


Multiplayer Championship Chess    
The strongest Chess game for a PDA or mobile device with an AI rated above Grand Master. Features stunning graphics and the ability to play (and chat) with real people over the Internet. Loaded with options, a strong Single Player Career Mode, and support for all devices and resolutions.
Developer: Real Dice
Web: www.realdice.com


Casino and Card Games

Aces Texas Holdem - No Limit    
No limit version of Texas Hold'em includes sound, up to 22 opponents at once, and 4 game speeds. You can Create/Modify opponents - setting their names, intelligence levels, and holdings, set blinds, tournament style or have players automatically sit in, statistics, and ability to stop and resume games, and realistic or large cards option.
Developer: Concrete Software, Inc.
Web: www.concretesoftware.com


Multiplayer Championship Poker - Texas Hold'em    
Features multiplayer and multi-table tournament play via Bluetooth or IrDA. Includes off-line AI opponents, 10-player tables, single player career mode, character profiles, a bank, online Hall of Fame stats with My RealDice, regular updates, and a free PC edition and strategy guide for all levels.
Developer: Real Dice
Web: www.realdice.com


Classic Arcade

Atomic Cannon Pocket    
Atomic Cannon Pocket is a strategic artillery simulation with realistic graphics and effects. Use over 85 different weapons. Create scorched earth in this strategic tank simulation where you battle against a computer or your friends on 25 deformable landscapes. The game features numerous user options, a full music track, and superior effects. Includes high resolution VGA graphics.
Developer: Isotope 244
Web: www.isotope244.com


Galaga    
Board your fighter; defend against alien fire and escape their collision-course formation attacks. Yes, Galaga by Namco is back! Retrieve captured fighters from boss alien's tractor-beam to become a Dual Fighter with double the fire power. Hone firing skills and get your hit-miss ratio to 100 percent. Re-live the retro action with the Palm OS and Windows Mobile versions of this arcade great.
Developer: Namco Networks
Web: www.namcogames.com


Color Matching

Bejeweled    
Tap adjacent pairs of gems to swap them and make matching horizontal and vertical lines of three or more. Choose from a relaxing and absorbing easy game, or a frantic and gripping timed game.
Developer: Astraware Limited
Web: www.astraware.com


DragonBall    
An addictive action puzzle with 73 interesting levels, pleasant music and high-quality graphics effects! Challenges your agility and requires quick thinking. Great music, terrific sound effects, and attractive gameplay along with ease of learning will make this game your favorite for a long time.
Developer: TA Games
Web: trialaction.com


Quartz 2    
Successor to our popular puzzle game Quartz; with new single-player game modes and multi-player capability. Play with your friends via Bluetooth, or against Quartz players around the world over the Internet!
Developer: Elements Interactive
Web: www.elementsgames.com


Puzzle Games

Brain School Brain Trainer    
A brain training game comprising 20 different puzzle games at 5 different levels. Includes daily tests and final exams. Helps improve your memory, spatial awareness, logical thinking, analytical reasoning, numeracy, and concentration.
Developer: Mastersoft Mobile Solutions
Web: www.mastersoftmobilesolutions.com


Spb Brain Evolution    
Using this game can improve your mental awareness, and maintain your brain fitness. Use for everyday training and you will find that your brain becomes faster and more reliable.
Developer: Spb Software House
Web: www.spbsoftwarehouse.com


TokiTori    
Armed with an arsenal of 10 different tools and weapons, TokiTori must overcome dangerous obstacles, trap monsters, and save all of the lost eggs. The game contains four mysterious worlds, offering over 60 levels of exciting platform and puzzle action.
Developer: AIM Productions NV
Web: www.aimproductions.be


Word Challenge for Smartphone    
A bundle of word games that will surely tickle your brain and test your word power. Four of the most popular and addictive word games have been combined into one exciting gamepack! These word games will challenge your word knowledge, eye coordination and quick thinking.
Developer: eSoft Interactive
Web: www.esoftinteractive.com


Racing Games

Flux Challenge SP    
A revolutionary 3D racing game revolving around a world of magnetic-levitation vehicles inside tunnels. Take control of one of these maglev ships, and become the international champion! Features * Best 3D graphics on a Pocket PC to date * Fast paced, adrenaline pumping racing action * 24 total races to play * 6 different ships to race with * 3 game mode for maximum replay value
Developer: PDAmill Game Studios
Web: www.pdamill.com


K-Rally    
A 3D top-down racer where your car is equipped with mines and rockets, with several kinds of useful upgrades available. Make your opponents spin and crash as you bombard them with a barrage of weapons.
Developer: Infinite Dreams
Web: www.idreams.pl


Raging Thunder    
Includes your choice of three cars and the ability to drive at top speeds. Drive on a variety of tracks set in different environments.
Developer: Mobile Digital Media
Web: www.gomdm.com


RPG / Adventure Games

Atlantis Redux    
An adventure game that will take players on a journey through time and varied landscapes. Journey from the Hoggar Desert to the cold plains of the Palaeolithic Age via the gardens of the Palace of One Thousand and One Nights.
Developer: Tetraedge Games
Web: www.tetraedge.com


Legacy    
A classic-style RPG. Incredible action, awesome sounds, intense combat, cunning puzzles, and game-enhancing sound effects. Experience this newly designed game system that utilizes the best elements from classic RPGs that you have come to love such as: Eye of the Beholder, Black Crypt, and Might&Magic.
Developer: Redshift
Web: www.redshift.hu


Scrolling Shooters

FireHawk    
A vertical scroller shooter. Includes 3D scenery and graphics.
Developer: c2matrix
Web: c2matrix.com


SkyForce Reloaded    
Classic arcade shooter, with 3d interactive objects, 8 high-detail pixeled environments, tons of enemies to shoot, and good old Earth to save.
Developer: Infinite Dreams
Web: www.idreams.pl


Simulation Games

Lemonade Tycoon    
In this game you can test your entrepreneurial skills by trying to sell lemonade. You start with a small lemonade stand and a few dollars in your pocket. Check the latest weather forecast and try to pick the best location for your stand, tweak your lemonade recipe, set your price and manage your inventory. You can re-invest your profits and streamline your production methods.
Developer: JAMDAT Mobile
Web: www.jamdat.com


Mini-Dogfight    
A multi-platform and multi-player air-combat game. Features famous fighters of WWII, and uses natural sceneries and realistic physics simulation to provide the experience of actual air combat.
Developer: OmniG Software
Web: www.omnigsoft.com


Mini-Jetfight    
Fly a highly maneuverable jet fighter as you combat other aircraft, using air-to-air missiles, abrupt maneuvers, and missile lures to protect yourself.
Developer: OmniG Software
Web: www.omnigsoft.com


Sports Games

Links    
Golf game with photo-quality animations and realistic ball/shot physics including terrain, green conditions, and wind.
Developer: JAMDAT Mobile
Web: www.jamdat.com


Pocket Mini Golf 2    
Miniature golf game with a total of 60 unique levels. 6 golfers with different play characteristics. Multiplayer option with up to 6 players. 3 game types (Standard, Arcade and Practice). Special objects including timed barriers, springs, conveyor belts, water hazards, and sand traps.
Developer: Momentum Games
Web: www.momentumgames.com


Virtual Pool Mobile    
An award-winning pool game. Features realistic physics and 3D game play. Career mode with movies of Curly the hustler guide you through 6 pool rooms and 120 opponents. Game modes include: Practice, Play your buddy, Tournaments, Trick shots, and Career.
Developer: Celeris, Inc.
Web: www.celeris.com


Strategy Games

Machines at War    
Command an army of forces across the battlefield with ease in this real time strategy game. You are challenged to construct an epic war machine and use it to become a dominating world power. Machines at War features a random map system so every game is unique and poses new challenges. Build bridges, mow down forests, build walls to defend your position, hide under trees for an ambush attack.
Developer: Isotope 244
Web: www.isotope244.com


Snails    
An arcade game with missions involving the snails. Includes ten levels, three storylines, and 25 unique weapons. Weapons are collected throughout the game.
Developer: PDAmill Game Studios
Web: www.pdamill.com


Information Managers

List & database managers

HanDBase Enterprise    
A feature-rich, award-winning database application. With powerful relational features, easy-to-use interface, and a large population of free databases available. The Enterprise version offers a Windows desktop companion, two-way synchronization conduit, forms designer, multi-user sychronization technology, ODBC Driver, and SyncExchange for ODBC.
Developer: DDH Software, Inc.
Web: www.ddhsoftware.com


ListPro    
Make and manage lists such as to-do lists, inventories, and shopping lists, and organize any kind of information. You can add custom columns, including dates, notes, categories, checkboxes, links, and more. You can also add unlimited-size notes, sub-items, and indentation. It supports numeric columns and amounts with auto-total. The current version is 5.0.
Developer: Ilium Software
Web: www.iliumsoft.com


Oxios ToDo List    
A Smartphone tasks manager to create, edit and modify tasks on your Smartphone and synchronize with MS Outlook. The set of standard views, categories filters and accelerators give you the ability to quickly navigate in the tasks list. You also can customize the display, so your most important tasks stand out.
Developer: Oxios
Web: www.oxios.com


PIMs

Agenda One    
Provides time, calendar, and contact management funtions. Can be used for your business, by your family, or for personal use. Features one-handed operations that let you navigate your calendar, tasks, and contacts. Other features include time-based filtering and contact smart search help.
Developer: Developer One, Inc.
Web: www.developerone.com


Papyrus    
A rubust, complete time-management solution for Smartphones. Papyrus offers many smart views and powerful tools to manage and keep track of your schedule. This is how your Smartphone is supposed to act!
Developer: SBSH Mobile Software
Web: www.sbsh.net


Secure Information Managers

CodeWallet Pro    
Conveniently manage passwords, banking info, online accounts, insurance policies, membership ids, pictures, and more. Provides a convenient and secure solution for managing sensitive personal and business information on a desktop computer or mobile device. The latest version includes enhanced synchronization, a new printing feature and support for more languages. The current version is CodeWallet Pro 2006.
Developer: Developer One, Inc.
Web: www.developerone.com


eWallet Professional    
A secure wallet utility to store info like credit cards, PIN numbers, passwords, emergency medical information, etc. The information is password-protected and encrypted for security. You can organize the information under different categories in "cards." You also can synchronize, enter, print, and back up information to your desktop.
Developer: Ilium Software
Web: www.iliumsoft.com


Internet

Web Browsing

Opera Mini    
A mobile phone Web browser.
Developer: Opera Software
Web: www.opera.com


Opera Mobile    
Surf the same Web sites as you do on your personal computer. Opera 8.6 for Windows Mobile is a small, fast and secure Web browser which provides full Internet access on your mobile device. Opera makes normal Web pages fit inside the screen of a small device and gives you the power to navigate Web sites that were not designed with mobile devices in mind.
Developer: Opera Software
Web: www.opera.com


Skweezer    
A free Web-based service that reformats large-screen Web pages for viewing on small-screen devices. It can be accessed at skweezer.net by using the portal as a wireless gateway to browse and search the Web. It compresses and reformats content being downloaded so that Web pages load faster and are easier to view and navigate on a small screen.
Developer: Greenlight Wireless Corporation
Web: www.greenlightwireless.net


Multimedia

Audio

Pocket Player    
Pocket Player supports MP3, OGG Vorbis, WMA, and WAV files plus a variety of streaming protocols: HTTP, etc. Supports Windows Network, Shoutcast, and Icecast. It also features gapless playback, track crossfading, and Microdrive support, and a 10-band equalizer and preamp with presets (for MP3 and OGG). It supports playlists and is skinnable (Pocket Player skins, WSZ skins).
Developer: Conduits Technologies, Inc.
Web: www.conduits.com


PocketMusic for Smartphone    
An alternative music player for Smartphone devices. It plays MP3, OGG Vorbis, MP1, and MP2 files, and has an advanced playlist editor. Features included are a 10-band equalizer with 18 presets (Dance, Headphones, Live, Pop, Rock, etc.) and a bass booster. Supports mapping of hardware keys to your own custom presets.
Developer: PocketMind Software
Web: www.pocketmind.com


VITO AudioNotes    
Records your notes into MP3 or WAV, features recording presets (low, midium and high quality for MP3 and WAV), VAS, microphone auto gain control. Also good for phone calls recording on WM 5.0 Smarthones. Record either to main memory or to storage card.
Developer: VITO Technology
Web: vitotechnology.com


VITO AudioPlayer    
Supports MP3, Ogg, and WAV. 4 playback modes: play single file, play files in folder, play files in subfolders, and play as an audio book (starts playing from the last stop point). The basic playback features supported in the AudioPlayer are: Shuffle/Repeat/Bass boost.
Developer: VITO Technology
Web: vitotechnology.com


Graphic

Homescreen Designer    
Create your own Homescreens for your Smartphone. A WYSIWYG editor so in only a few clicks your new Homescreen appears on your device!
Developer: Ruttensoft
Web: www.ruttensoft.com


Resco Photo Viewer    
Manage and view your images in different file formats, including .jpg, .gif, .bmp, .pcx, .cfx, Adobe .psd, and more. It's ideal for organizing, viewing, enhancing, and editing your images. Using the image browser, you can organize and preview images and copy, move, delete, and sort them the way you want. A viewer generates high-quality displays of your images and allows you to run slide shows, play audio, add text, and play animated gifs.
Developer: Resco, Ltd.
Web: www.resco.net


Multimedia Tools

BlueTooth Audio    
Transfers all of the sounds from your internal speaker to your Bluetooth headset.
Developer: Blade2032
Web: www.trianglepowers.com/PPC/Apps.aspx?app=PPC


DBPoweramp    
Multimedia ripper / converter for the desktop.
Developer: Illustrate
Web: www.dbpoweramp.com/


Slingplayer    
Using this with a Slingbox hardware setup allows you to view live and recorded TV over the Internet. You can also control a DVR remotely with your Windows Mobile device.
Developer: SlingMedia
Web: www.slingmedia.com


Video

CorePlayer Mobile    
A technology agnostic media platform which turns mobile devices like mobile phones, PMP, GPS, and PDA's into multimedia players without the need to replace legacy hardware.
Developer: CoreCodec, Inc.
Web: www.corecodec.com


Orb    
A media player that allows you to view TV, listen to Internet radio, and view photos and videos over an Internet connection on a Windows Mobile device. It turns your home PC into a broadcasting system.
Developer: Orb Networks, Inc.
Web: www.orb.com


Text and Reference

Dictionaries

SlovoEd Multilingual Dictionaries    
Translation and explanatory dictionaries, available for more than 150 language pairs. The unique features are: resident module (enables to translate a word in any application without opening the dictionary), wildcard search, localized dictionary interface. Languages supported: English, Spanish, French, German, Italian, Dutch, Swedish, Portuguese, Czech, Greek, Russian, etc.
Developer: Paragon Software
Web: www.penreader.com


WordBook    
A dictionary with more than 147,000 entries, including a Word Picker feature (look up word definitions inside other apps). Has a total of 1.8 million words. Definitions include usage samples and synonyms, and word links. Follow the links to see synonyms, antonyms, hyponyms, and derivationally related forms. Also, supports wildcard, anagram and phonetic word search.
Developer: TranCreative
Web: www.trancreative.com


Document Viewers

ClearVue Suite    
A viewer that can open and view native MS Office 97, 2000, or XP PowerPoint, Excel, Word, image, or PDF files plus digital images and Adobe Acrobat PDF files. It does not require any additional software or ActiveSync conversion.
Developer: WESTTEK
Web: www.westtek.com


Documents To Go    
Allows you to view, edit, and create native Word, Excel, and PowerPoint files. Now supports Microsoft Office 2007 files. In addition, users can view Adobe PDF files and compress/zip and decompress/unzip e-mail attachments. Includes InTact Technology, enabling your files to never lose their format and data when you make edits on your mobile device.
Developer: DataViz, Inc.
Web: www.dataviz.com


Mobipocket Reader    
An e-book reader which displays text in page-by-page formatting with no scroll bars. It displays fully justified text with hyphenation. You can make bookmarks, highlight text, and annotate text. It displays Tables of Contents, cover pages, and indexes. It supports Open-e-Book and XML/HTML/CSS format. A number of e-books can be bought from the developer's Web site.
Developer: Mobipocket.com
Web: www.mobipocket.com


Educational

CIA World Factbook Handheld Edition    
Snapshot of the world; includes flags, maps, and extensive country-specific data. The current version is CIA World Factbook 2006 Handheld Edition.
Developer: Mobifusion Inc.
Web: www.mobifusion.com/


Leonard Maltin's Movie Guide    
Movie guide that places essential facts for over 21,000 films at your fingertips, including ratings and capsule reviews. Summarizes plot, rates quality, and contains great tidbits of information. Also shows upcoming and current DVD movie releases via a free update service on the Internet. Lets you track your movie (DVD, videotape or LaserDisk) collection. Current version is Leonard Maltin's 2006 Movie Guide.
Developer: LandWare, Inc.
Web: www.landware.com


World Almanac - Handheld Edition    
Features 13,750 entries loaded with stats, graphs, tables, and more. Current version is 2006 World Almanac - Handheld Edition.
Developer: Mobifusion Inc.
Web: www.mobifusion.com/


Feed Reader

FeederReader    
A full-featured RSS Aggregator with extensive support for audio and video podcasts running on Windows Mobile devices. Download on the Road (no desktop needed): News, Blogs, Audio Podcasts and Video Podcasts. You can update when your device is connected to the Internet (i.e. through a LAN or a Mobile Phone) and read, watch and listen while offline.
Developer: Greg Smith
Web: www.FeederReader.com


NewsBreak    
Provides the latest podcasts, headlines, weather, sports, business, and entertainment news wirelessly. Keep up-to-date on blogs, bargains, stocks and more. Use your wireless connection to update your headlines.
Developer: Ilium Software
Web: www.iliumsoft.com


Newsgator Go    
Allows users to read content and manage subscriptions directly from any device running the Windows Mobile 2003 or later operating systems. Content including feeds and links is automatically formatted for the device and gets cached and stored locally so you can read it when you are not connected to the Internet.
Developer: Newsgator
Web: www.newsgator.com


Travel

Travel Tools

Fizz Traveller    
Provides current weather and forecasts, daylight chart, distances, and international info for over 58,000 world cities. Also includes itinerary planning, city's date and time, multiple alarms, daylight maps, currency conversions, general conversions. Has new graphics, Themes, new interface & home screen support - English, French, German, Spanish, Italian, Dutch and Romanian.
Developer: Fizz Software Ltd
Web: www.fizzsoftware.com


WorldMate    
Provides essential business-travel services and unlimited flight status updates and animated weather maps. The ultimate business-travel tool. For Smartphone.
Developer: MobiMate
Web: www.mobimate.com


Utilities

Calculators

1-Calc    
An easy-to-use calculator with full scientific calculator, unit converter, currency converter, and base converter capabilities. The currency converter automatically retrieves exchange rates from the Web for a large variety of currencies. The unit converter converts a wide range of measurements, from distances to hat sizes. Buttons are all customizable.
Developer: Omega One Software LLC
Web: www.omegaone.com


ALL-calculator    
A scientific calculator for the Smartphone. It can add, subtract, divide, and multiply, and calculate the root, square root, or cube root of a number, degrees, radians, or grads, sine, cosine, tangent, arc sine, arc cosine, or arc cotangent, with an internal precision of 32 digits.
Developer: ALL-locations
Web: www.all-locations.com


Math Tablet for Smartphones    
An advanced scientific graphing calculator for scientists and engineers. Math Tablet supports RPN and algebraic entry, matrices and complex numbers. It includes hundreds of built in unit conversions, statistical functions, an integrated programming language, and advanced features such as polynomial root finder, nonlinear equation solver, numerical integration, eigen values and vectors.
Developer: G. Mason
Web: www.statsnow.net


File Management

Resco Explorer for Smartphone    
All the standard file and folder manipulation features that you need in a file explorer. You can copy or delete files, create folders, search for files or folders, view a file's properties, and sort and filter your listings. Includes the following modules: file encryption, ZIP compression, built-in viewer, network browser, registry editor.
Developer: Resco, Ltd.
Web: www.resco.net


Sprite Backup    
Includes all of the functionality of the standard edition and also allows you to back up directly to your PC or network. Safeguards the data, settings, and installed applications on your mobile device from theft, system crashes, malicious code, or during routine upgrades. You can schedule automatic backups of your mobile device to memory cards or directly to your PC.
Developer: Sprite Software Ltd
Web: www.spritesoftware.com


Networking and Remote Desktop

FlexMail    
It allows you to manage your e-mail from your mobile device. It can be synchronized with your desktop or with your mailboxes on POP3 or IMAP servers using industrial strength SSL security or going through your SOCKS proxy.
Developer: WebIS, Inc.
Web: www.webis.net


FTP Explorer Mobile    
An FTP Client for Windows Mobile-based devices. It allows you to transfer Web sites, videos, music, applications, or documents to your home or office in the background while you do other tasks.
Developer: Orneta
Web: www.orneta.com


True Connect    
Lets you directly control your mobile device using the PC's mouse and keyboard. Simply move the mouse cursor off the PC monitor and onto the connected device screen. All aspects of the device such as the Home screen, menus, and applications can be controlled from your PC.
Developer: Raspberry Software Limited
Web: www.raspberrysoftware.com


Notes

PhatNotes 5    
A notes organizer that lets you create notes and categorize them by type, subject, and date. Works on Windows-based smartphones, Pocket PCs, and desktop PCs. You can also synchronize notes between multiple platforms, allowing you to manage and access personal information on-the-go.
Developer: PhatWare Corporation
Web: www.phatware.com


SmartphoneNotes    
An application that can be used to view and edit your Outlook Notes on your Smartphone. You can make new Notes, change or delete Notes, and have Notes transferred to Microsoft Outlook at your next synchronization. Works with Outlook 2000, 2002 XP, 2003, and ActiveSync 3.7.1 or later.
Developer: Syncdata
Web: www.syncdata.it


Screen Capture and Display

SBSH Facade    
A highly customizable tab-based Home screen plug-in for Smartphone devices. You can view your upcoming and future appointments and tasks directly on your Smartphone Home screen, keeping you up to date on all your important appointments and tasks.
Developer: SBSH Mobile Software
Web: www.sbsh.net


SOTI Pocket Controller-Pro    
An application that lets you control and operate your PPC/SP from your desktop PC. Version 6 offers ten products in one, including: Real-Time Remote Control, Presentation & Training Tools, File Sync, File Explore Tool, Registry Editor, Task Manager, System Information, Screen/Video Capture, Printing, Macro-Recording, Executing DOS commands, Remote Device Wipe, and more.
Developer: SOTI Inc.
Web: www.soti.net


System and Registry

SKTools Standard    
A maintenance toolkit program. Cleans the registry and the file system, frees up RAM, and more.
Developer: SKKV Software
Web: s-k-tools.com


Tweaks2K2 .NET for Smartphone    
Collection of registry hacks for the SmartPhone that help users to take full control of their devices.
Developer: Tweaks2k2
Web: www.tweaks2k2.com


VITO CopyPaste    
A system utility that simplifies managing your Smartphone. Copy or cut the info from an edit box and paste it to another one. You can also select the necessary part of the edit box contents for copying or cutting to another editable field.
Developer: VITO Technology
Web: vitotechnology.com


Task Management

acbTaskMan    
A resource and task manager for mobile devices. Lists all running tasks and processes, along with the CPU and memory usage of each. Also charts total CPU usage, usage for each process, power consumption, and network utilization. You can also list all loaded modules and filter the modules by a selected task, or display tasks that use a specific module.
Developer: acbPocketSoft
Web: www.acbPocketSoft.com


SP Task Manager    
SP Task Manager is a utility for your Smartphone that allows you to manage running applications, get phone battery/memory status, and format SD/MMD cards. Give it a try; the trial version is not time-limited.
Developer: Binarys
Web: www.binarys.com


SystemToys    
A set of 2 tools, a battery monitor and a task manager. The battery monitor is a small utility that displays the state of your battery, internal memory, and storage cards. The task manager makes it easy to close your Smartphone applications or switch to any running application.
Developer: Resco, Ltd.
Web: www.resco.net


Contact Us - About Us - Advertise with Us

Best Smartphone Software Awards 2007

Posted by krsuncom
스크랩/번역2008. 2. 28. 16:34

마이크로 소프트웨어 사이트를 스크랩 해둔다.

WMV HD Content Showcase

High Definition Quality with Windows Media Video 9
Windows Media Audio and Video 9 Series is a breakthrough set of codecs that enables multichannel audio and high definition (HD) video at resolutions up to 1080p. See high definition in action for yourself with these downloads. To deliver ultra-high quality, these clips were encoded at 24 frames per second (fps), and at the resolutions noted of either 1280 x 720 (720p) or 1920 x 1080 (1080p). (Resolutions vary per clip.)

  • System Requirements
  • About DRM
  • Looking for More
  • Authoring Guide for Producing a WMV HD DVD-ROM

    Adrenaline Rush

    Adrenaline Rush

    Total Run Time 1:54 min
    download now720p (127 MB)

    Fighter Pilot

    Fighter Pilot

    Run Time 2:25 min
    download now 720p (165 MB)
    DVD Get the DVD

    Mystery of the Nile

    Mystery of the Nile

    Run Time 1:26 min
    download now 720p (105 MB)
    DVD Get the DVD

    Super Speedway

    Super Speedway

    Total Run Time 2:00 min
    download now720p (135 MB)

    Coral Reef Adventure (IMAX)

    Coral Reef Adventure

    Run Time 1:45 min
    download now 720p (84 MB)
    download now 1080p (105 MB)
    DVD Get the DVD

    Lewis and Clark

    Lewis and Clark

    Run Time 3:33 min
    download now 720p (212 MB)
    DVD Get the DVD

    Search for Kennedy's PT109

    Kennedy's PT109

    Run Time 3:32 min
    download now 720p (216 MB)
    DVD Get the DVD

    Alexander

    Alexander

    Run Time 1:53 min
    download now 720p (90 MB)
    download now 1080p (123 MB)

    The Rules of Attraction

    The Rules of Attraction

    Run Time 1:58 min
    download now 720p (97 MB)
    download now 1080p (120 MB)

    Robotica

    Robotica

    Run Time 0:21 min
    download now 720p (16 MB)
    download now 1080p (20 MB)

    Amazon (IMAX)

    Amazon

    Run Time 1:42 min
    download now 720p (81 MB)
    download now 1080p (107 MB)
    DVD Get the DVD

    The Discoverers (IMAX)

    The Discoverers

    Run Time 2:31 min
    download now 720p (113 MB)
    download now 1080p (149 MB)
    DVD Get the DVD

    Dolphins (IMAX)

    Dolphins

    Run Time 1:46 min
    download now 720p (85 MB)
    download now 1080p (107 MB)
    DVD Get the DVD

    Journey Into Amazing Caves (IMAX)

    Journey Into Amazing Caves

    Run Time 1:25 min
    download now 720p (68 MB)
    download now 1080p (87 MB)
    DVD Get the DVD

    The Living Sea (IMAX)

    The Living Sea

    Run Time 2:48 min
    download now 720p (117 MB)
    download now 1080p (153 MB)
    DVD Get the DVD

    The Magic of Flight (IMAX)

    The Magic of Flight

    Run Time 2:02 min
    download now 720p (98 MB)
    download now 1080p (126 MB)
    DVD Get the DVD

    Speed (IMAX)

    Speed

    Run Time 2:07 min
    download now 720p (99 MB)
    download now 1080p (132 MB)
    DVD Get the DVD

    Stormchasers (IMAX)

    Stormchasers

    Run Time 1:31 min
    download now 720p (71 MB)
    download now 1080p (93 MB)
    DVD Get the DVD

    To the Limit (IMAX)

    To the Limit

    Run Time 2:10 min
    download now 720p (101 MB)
    download now 1080p (134 MB)
    DVD Get the DVD

    Step Into Liquid

    Step Into Liquid

    Run Time 1:56 min
    download now 720p (94 MB)
    download now 1080p (114 MB)
    DVD Get the DVD

    Taxi 3 (in French)

    Taxi 3

    Run Time 2:42 min
    download now 1080p (162 MB)

    Godsend

    Godsend

    Run Time 2:31 min
    download now 720p (144 MB)

    Dust to Glory

    Dust to Glory

    Run Time 3:19 min
    download now 720p (240 MB)

    True Crime

    True Crime

    Run Time 3:08 min
    download now 720p (145 MB)

    Terminator 2: Judgment Day

    Terminator 2: Judgment Day

    Run Time 1:59 min
    download now 720p (95 MB)
    download now 1080p (117 MB)
    DVD Get the DVD

    System Requirements
    The sample clips have data rates between 6,384 Kbps and 10,440 Kbps. The higher the data rate, the higher the resource requirement.
    Although other system configurations might be able to play back this content, for an optimal experience we recommend the following configurations:

    Minimum Configuration
    (to play 720p video)

  • Windows XP
  • Windows Media Player 9 Series
  • 2.4 GHz processor or equivalent
  • 384 MB of RAM
  • 64 MB video card
  • 1024 x 768 screen resolution
  • 16-bit sound card
  • Speakers
    Optimum Configuration
    (to play 1080p video with 5.1 surround sound)
  • Windows XP
  • Windows Media Player 10
  • DirectX 9.0
  • 1.8 GHz Intel Core Duo or higher processor (or equivalent);
        3.0 GHz Intel Pentium 4 or higher processor (or equivalent)
  • 512 MB of RAM
  • 128 MB video card
  • 1920 x 1440 screen resolution
  • 24-bit 96 kHz multichannel sound card
  • 5.1 surround sound speaker system

    About DRM
    Sample clips marked with an asterisk (*) are copy protected and may require you to update your digital rights management software if you do not have the latest version. The update will take less than one minute to download and install on most systems and happens automatically through Windows Media Player when the file is played.
  • WMV HD Content Showcase

    Posted by krsuncom
    스크랩/번역2007. 11. 26. 17:07

    공감이 가는 글이다. 국내 대표적인 포털인 네이버나 다음은 안하는게 없다... 사실상 새로운 아이디어로 비집고 들어갈 틈도 없는것 같다.  새로운 아이디어로 기획을 하고 서비스를 개시한다고 해도 뛰어난 개발자들을 대부분 보유하고 있는 포털들에서 서비스를 복사해 버릴것 같은 분위기...

    대부분의 기술들이 오픈되는 마당에 특허라는것도 과연 도움이 될까??  비켜갈 방법은 얼마든지 있을텐데.. 서비스 잘 꾸며서 대형 포털에 묻어갈 생각이나 해야겠다. 킁~~~

    아래는 원문이다......: IT/장정훈 기자의 블로그" href="http://blog.joins.com/media/folderListSlide.asp?uid=cch97&folder=2&list_id=8764116">IT/장정훈 기자의 블로그

    [피플@비즈] "포털 독과점 계속될 땐 구글 같은 벤처 못 나와"
    조회(13) / 추천

    http://blog.joins.com/cch97/8764116
    등록일 : 2007-11-22 19:25:26


    김택진 엔씨소프트 사장이 서울대 특강 자리에서 국내 포털 업계를 싸잡아 공격했다. 주요 표적은 네이버와 다음이다. 김 사장은 21일 “ 포털은 누구에게나 열린 공간이 돼야 하는데 포털들은 그렇게 운영을 하지 않고 있다”며 포털의 독주에 각을 세웠다. 그는 이어 “이런 포털의 독과점 문제가 해결 안 되면 앞으로 성공한 벤처가 나오기 힘들고, 젊은이들이 인터넷 무대에서 꿈을 펼치기도 어려울 것”이라고 주장했다. 그는 미국에서 구글이나 유튜브 같은 새로운 벤처가 탄생한 배경도 설명했다. 미국 마이크로소프트(MS)가 독과점 행태를 보이자 정부나 법조계가 나서 끊임없이 MS를 견제한 결과라는 것이다.
    이날 서울대 기초교육원에서 ‘공학도에서 게임사 최고경영자(CEO)까지’란 주제로 강의를 한 그는 한 학생이 “최근 인터넷 포털의 서비스 방식을 어떻게 생각하는가”라고 묻자 기다렸다는 듯이 날 선 주장을 폈다.
    김 사장은 “네이버나 다음이 제공하는 검색 결과는 자사의 데이터베이스를 기준으로 보여 주는 것 아니냐”며 “그런데도 마치 모든 인터넷 공간에서 찾은 것처럼 네티즌을 호도하고 있다”며 비판 수위를 높였다.
    작심한 듯 포털을 비판한 김 사장에게 그 이유를 강연이 끝난 뒤 물었다. 그는 “포털이 지금과 같은 패쇄성을 계속 고수한다면 인터넷 산업 전반의 발전이 어려울 것이란 절박한 심정에서 그렇게 말한 것”이라고 강조했다. 또 물고기를 가둬 놓는 양어장처럼 이용자를 자사 사이트에 가둬 놓는 독점 행태를 보이고 있다며 포털의 운영 방식을 강하게 비판했다. 김 사장은 또 “젊은이들 앞에서 도전을 얘기하는 포털이 그들의 도전 기회를 가로막고 있어 더욱 목소리를 높였던 것”이라고 덧붙였다.
    김 사장은 이날 강연에서 게임사 CEO로서의 고민도 털어놨다. 그는 “창업 초기 게임사라는 이유만으로 투자를 받지 못해 사무실이 변변치 않았다”며 “밤에도 비만 오면 회사로 달려가 서버가 빗물에 젖지 않도록 날밤을 새웠다”고 말했다. 또 그는 “아직도 게임은 선정적이고 폭력성이 짙다는 부정적 인식이 많다”며 “포털들이 앞장서 포커나 고스톱 같은 사행성 게임을 서비스해 도박성 논란을 부추기고 있어 게임 창작을 하는 경영인으로서 고충이 적잖다”고 말했다. 그는 “젊음은 도전하는 것”이라며 “좋아하는 일을 찾아 열정을 갖고 하면 반드시 성공할 것”이란 말로 이날 강연을 마쳤다.
    장정훈 기자
    ◆김택진(41) 사장=서울대 전자공학과(85학번) 출신으로 1997년 게임사 엔씨소프트를 창립했다. 98년부터는 국내 최초의 온라인게임 ‘리니지’를 서비스했다. 엔씨소프트는 2003년 리니지Ⅱ의 서비스를 시작했으며, 현재 리니지 시리즈를 비롯해 10여 개의 게임을 전 세계 40여 개국에서 서비스하고 있다. 엔씨소프트의 시가총액은 1조원. 김 사장은 약 30%의 지분을 갖고 있다.

  • 기사 본문 읽기
    2007.11.22 19:25 입력
  • IT/장정훈 기자의 블로그

    Posted by krsuncom
    블랙잭이야기2007. 11. 22. 14:13

    스펙이 소문과 다른 부분이 있나보다..자잘한 내용들은 적어두고 있다.

    UNVEILED: Samsung SGH-i780 Windows Mobile Smartphone shows its Specs [UPDATE]

    Posted by Arne Hess - at Friday, 21.09.07 - 15:34:57 CET under 02 - Pocket PC News - Viewed 10682x
    Tagged under: [Samsung] [SGH-i780] [Windows_Mobile_6_Professional]

    Samsung's recently unveiled Windows Mobile smartphone is indeed the Samsung SGH-i780 as it is now confirmed by a document of the Bluetooth Special Interest Group. It seems to be even brand new (it just received its Bluetooth approval beginning this month). So what's known so far?
    The SGH-i780 is sporting Windows Mobile 6 Professional and features triband GSM/GPRS/EDGE at 900/1800/1900 MHz as well as singleband UMTS/HSDPA at 2100 MHz. Furthermore it features Bluetooth 2.0+EDR, WiFi b/g and is expected to even include GPS (type unknown)!

    Quite unique for a Windows Mobile device is the 2.55" 320 x 320 pixel touch-screen (AFAIK it's even the first Windows Mobile smartphone with this new screen resolution). In addition, the device features a QWERTY thumb-keyboard and a kind of optical mouse:

    The SGH-i780 is expected to feature a 3.2 2 megapixel main camera and a second VGA front camera for video telephony. According to reports from the Gitex, the device measures 115.9 x 61.3 x 13.3 mm.
    Internal memory is unknown yet but it can be extended by microSD cards.

    A release date or release area isn't known yet, but based on the supported GSM and UMTS bands, a release can be expected for EMEA and APAC, especially because some European Samsung Mobile websites (UK, Germany, Spain) lists it already:

    출처: the::unwired - UNVEILED: Samsung SGH-i780 Windows Mobile Smartphone shows its Specs [UPDATE]

    Posted by krsuncom
    IT 이야기2007. 9. 11. 12:01

    HP는 신형 스마트 폰인 ‘HP 아이팩 610 비즈니스 내비게이터’와 ‘HP 아이팩 910 비즈니스 매니저’를 발표했다. 두 기종 모두 기대를 저버리지 않았다.

    HP 아이팩 910 비즈니스 매니저(제공: HP)

    아이팩 610은 HSDPA를 지원하는 쿼드 밴드 휴대 전화로 구글 맵스를 통합한 어시스트 GPS(AGPS)에 대응한다. 같은 비행기종은 ‘윈도우 모바일 6(프로페셔널 에디트)’을 기본으로 하고, 블루투스 2.0, 와이파이(보안 기능의 WPA2에 대응한 802.11 b/g), 256메가바이트의 플래시 롬, 128메가바이트의 SDRAM 그리고 3메가 픽셀 카메라가 장착돼 있다.
    전 기종 ‘HP 아이팩 510 보이스 메신저’처럼 아이팩 610도 음성 조작에 초점을 맞춘 스마트 폰이며, 아이팩 510처럼 고도의 음성 커맨드 시스템이 내장돼 있다. 아이팩 610은 아이팩 510보다 2인치 큰 2.8인치의 스크린이 탑재됐으며, 터치스크린이 장착됐다.
    또 하나 개선점은 숫자키 0의 키패드 한가운데를 ‘스마트 터치’로 바꿔서 이것을 이용한 다양한 메뉴에 스크롤이 가능하다. 아이팩 600 시리즈는 9월말 출하될 예정으로 예상 가격은 잠금 해제판이 약 600달러이다.

    HP 아이팩 610 비즈니스 내비게이터(제공: HP)

    HP 아이팩 910 비즈니스 매니저는 자주 메일을 이용하는 유저를 위한 제품이다. ‘HP 아이팩 hw6900’의 후속 기기로 쿼티 키보드와 2.46인치 터치스크린을 가졌고 푸시형 전자 메일 기능이 있다. HSDPA, AGPS, 블루투스 2.0, 와이파이, 3메가픽셀 카메라 탑재 등 아이팩 610과 같은 기능을 갖고 있다.
    아이팩 910은 오는 11월말에서 12월초에 출하될 예정이지만 가격정보는

    원문:ZDNet Korea...HP, 스마트폰「iPaq 610」과「iPaq 910」발표

    Posted by krsuncom
    IT 이야기2007. 9. 11. 10:54

    스카이프에서 홈페이지 리뉴얼 기념 이벤트 실시한다. 블랙잭을 준다고 하는데...

    기타 경품도 많이 있다....회원이면 한번 참여하여 상품을 챙기시길....

     

    참조기사 : 요기

    Posted by krsuncom
    개발이야기2007. 8. 30. 15:15

    원본은 요기

    SmartPhone Tips

    Source: http://67.122.16.97/lars/misc/smartphone/smartphonetips.txt
    

    Disable Guest Mode
    On the PC to disable guest mode
    Open up regedit..
    Start-Run-Regedit and click OK.
    Navigate to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows CE Services

    and change the value of GuestOnly registery to 0 or delete it..
    -----------------------------------------

    Good Software
    • A registry editor like PHMregedit or Resco's
    • Westek ClearVue suite for viewing Word, Excel, PDF, Powerpoint and Images.
    • Zsoft PTab spreadsheet program. This is a full Excel spreadsheet program.
    • O]ios ToDo List replaces the worthless task functionality with a real Outlook-like version.
    • Resco Explorer is a better file explorer
    • Orneta Notepad. A really good text editor. See also Orneta ftp.
    • TCPMP with the AAC plugin a truly amazing media player
    • FoneDB from Syware. Not currently working on the Q but an ODBC customizable database with two way sync. Data can be read by MSAccess.
    • PDASyncserver Set it up to Sync files/folders between the smartphone and PC. Unfortunately it requires a manual key press to initiate the sync after connecting the phone.

    Useful registry entries/locations:

    \hkey_current_user\security LockTimeout Allows you to set custom timeouts beyond 60min.
    One minute is 60000. So 10 hours is 36,000,000. Long enough to lock overnight but
    not be bothersome during the day.
    \hkey_current_user\controlpanel Lockedtimeout Sets the amount of time the screen stays on
    when the phone is locked. Default is a short 2 seconds. Browse around the Control
    Panel section for lots of other useful ones.

    \hkey_classes_root is where the file associations are. Look for entries like
    \hkey_classes_root\xlsfile\shell\open\command or opendoc. See the existing entries and
    it will be obvious how to modify them. Some programs like "%1" param.
    Others just %1. Ignore .xls entries as they refer to xlsfile

    No Startup Sound
    \HKEY_CURRENT_USER\ControlPanel\Sounds\SystemStart \Sound
    Change
    \Windows\Piano.wav to \Windows\*none*

    No Camera Click Sound
    \HKEY_LOCAL_MACHINE\System\Pictures\Camera\OEM\Sou ndFile
    Change the string/value:
    \windows\shuttersound_02_secs.wav
    to say:
    \windows\*none*

    Making the scrollbars smaller (Vert. and Horz.)

    1) Go to HKey_LOCAL_MACHINE\SYSTEM\GWE\
    2) Adjust the following values
    cyHScr : Horizontal Scrollbars
    Height in pixels (default is 6, set it to 3)
    cxVScr : Vertical Scrollbars
    Width in pixels (default is 6, set it to 3)
    3) Soft-reset

    Speed hack

    1) Navigate to HKEY_LOCAL_MACHINE\SYSTEM\GDI\GLYPHCACHE
    -> change limit from 16384 to 32768

    2) Navigate to HKEY_LOCAL_MACHINE\SYSTEM\STORAGEMANAGER\FATFS
    -> change cachesize to 4096

    To free up memory

    To free up a bunch of memory on your phone perform the following to move the Cache, Cookies, and History to your storage card. After doing so, you must use that storage card when using Pocket Inernet Explorer. You can however create the same folders on each memory card that you use.
    Step 1.
    Using File Explorer in ActiveSync or the File Manager on your smartphone, create the following folders on the root of your Storage Card.

    \ietemp\cache
    \ietemp\cookies
    \ietemp\history

    Step 2.
    Fire up the registry editor on your phone and navigate to the following key.

    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders

    You will need to edit the following values.

    Cache Change Value Data to \Storage Card\ietemp\cache
    Cookies Change Value Data to \Storage Card\ietemp\cookies
    History Change Value Data to \Storage Card\ietemp\history

    Reboot your phone.

    Step 2.
    Next, fire up your File Manager and navigate to \Windows\Profiles\Guest and delete the \cache, \cookies, and\history, folders.

    If they do not delete then double check your regedits. To verify that it is working, visit a website with PIE and then check your new folders on the storage card for contents.


    Move Email and Attachments to Storage Card

    Written by Tony Leone
    Monday, 16 January 2006
    You can free up even more memory on your phone by moving all of your downloaded mail and attachments to your Storage Card.
    Step 1.
    Using the file manager in activesync, create the following folders on your Storage Card.

    \MAPI
    \MAPI\ATTACHMENTS
    (You can actually name them whatever you want, "Inbox" for example.)

    Step 2. Now browse to \Windows\Messaging (SmartPhone) or \Windows\MAPI (PocketPC)
    If you want to save all of your existing mail, move everything in this directory to the new ones on your Storage Card.

    Step 3. Now fire up your registry editor and navigate to the following.

    [ HKEY_CURRENT_USER\Software\Microsoft\MAPI ]
    Then create the following keys.
    "AttachPath" (Value)= \Storage Card\MAPI\Attachments
    "PropertyPath" (Value)= \Storage Card\MAPI
    Step 4. Reboot your phone and then goto your inbox. If you can see all of your mail then mission accomplished. Double check your attachments as well.


    Page Up and Page Down in IE

    Key mapping for "Page Up" and "Page Down" in Internet Explorer

    1. Open your favorite registry editor then navigate to HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer

    2. Create a new key 'KeyMaps' (without the quotes)

    3. Under KeyMaps, create 2 new DWORD values:

    50 with a value data 1 (this will make key "2" Page Up)

    56 with a value data 2 (this will make key "8" Page Down)

    I created 2 more DWORD values:

    52 with a value date 5 (this will make key "4" Page Left)

    54 with a value date 6 (this will make key "6" Page Right)

    The key name is the keycode you want. 50 = Key 2, 56 = Key 8, 52 = Key4, and 54 = Key 6.

    Other DWORD values available are:

    1 - Page Up
    2 - Page Down
    3 - Top
    4 - Bottom
    5 - Left
    6 - Page Rignt
    7 - Horizontal Top
    8 - Horizontal Down
    9 - Default Layout
    10 - Desktop Layout
    11 - One Column Layout
    12 - Full Screen Toggle
    13 - Show Pictures Toggle

    Keycodes Values for 0-9: 48='0', 49='1', 50='2', 51='3', 52='4', 53='5', 54='6', 55='7', 56='8', 57='9'.

    4. Exit registry editor once you have mapped it to your favorite keys.
    I use:
    49 3, 50 1, 52 5, 54 6, 55 4, 56 2, 69 1, 70 6, 83 5, 87 3, 88 2, 90 4

    CREDIT: Gadget & the fine people at modaco.com forums

    69 with a value data 1 (this will make key "E or 2" Page Up)

    70 with a value data 6 (this will make key "F or 6" Page Right)

    83 with a value date 5 (this will make key "S or 4" Page Left)

    88 with a value date 2 (this will make key "X or 8" Page Down)

    Adding Password Protection Before Using Data Connection

    \HKEY_LOCAL_MACHINE\COMM\ConnMgr\Providers(7C4B7A38-5FF7-4BC1-80F6-5DA7870BB1AA)Connections

    If you want it to require you to put a password in when you login on to the internet d the following: inside the broadband and express folder change requirepw from 0 to 1, it will require u to put in a password. Perform the same action in the following Keys.

    &
    \HKEY_LOCAL_MACHINE\COMM\ConnMgr\Providers(EF0974C-4C98FF6-AEF805DC0E8E)VZW BROWSER
    &
    HKEY_LOCAL_MACHINE\SOFTWARE\MOTOROLA\MMS\PROFILES\VZW MMS

    CREDIT: grigsby1

    SmartPhone Tips

    Posted by krsuncom
    개발이야기2007. 8. 13. 20:59

     

    WM5 Registry Tweaks - Performance

    These Registry tweaks are typically used to improve performance of Windows Mobile 5. (This content was split off from WM5_Tweaks_Other because that page would no longer accept additional content.)


    For further tweaks, see: WM5 Tweaks - Other and http://www.pocketpctweaks.com/


    Note to editors:

    When editing, please make sure to disable the "[ ] Use Old Markup" option for display formatting reasons.


    EXAMPLE - TRY NOT TO EDIT/DELETE

    Tweak to do something

    To do this and that, adjust the following registry value:

    HKLM\Software\Microsoft\Something\SomeValue = 1 (DWORD decimal)

    To do something different entirely, perhaps the opposite, do this:

    HKLM\Software\Microsoft\Something\SomeValue = 0 (DWORD decimal)

    This is an additional note


    Disable menu animations

    To disable menu animations (sliding in/out) and speed up performance of the UI a bit:

    HKLM\SYSTEM\GWE\Menu\AniType = 0 (DWORD decimal)

    To change it back to the default:

    HKLM\SYSTEM\GWE\Menu\AniType = 6 (DWORD decimal)

    Disable window animations

    To disable window animations (minimizing/maximizing) and speed up performance of the UI a bit:

    HKLM\SYSTEM\GWE\Animate = 0 (DWORD decimal)

    And to switch them back on:

    HKLM\SYSTEM\GWE\Animate = 1 (DWORD decimal)

    Increase font cache

    To increase the font cache, speeding up font rendering at the cost of a bit of memory:

    HKLM\SYSTEM\GDI\GLYPHCACHE\limit = 16384 (DWORD decimal)

    To change it back to the default:

    HKLM\SYSTEM\GDI\GLYPHCACHE\limit = 8192 (DWORD decimal)

    You can set the value to pretty much anything you like, but suggested values are 4096, 8192, 16384 & 32768.

    Enable FileSystem cache

    To enable the FileSystem cache, speeding up overall performance at the risk of the cache not being written on a sudden reset:

    HKLM\System\StorageManager\FATFS\EnableCache = 1 (DWORD decimal)

    To disable again:

    HKLM\System\StorageManager\FATFS\EnableCache = 0 (DWORD decimal)

    Note that by default, the cache size is zero, and you will see no effect. See "Increase FileSystem cache" below to increase the cache size.

    Increase FileSystem cache

    To increase the file system cache:

    HKLM\System\StorageManager\FATFS\CacheSize = 4096 (DWORD decimal)

    To return the file system cache to zero:

    HKLM\System\StorageManager\FATFS\CacheSize = 0 (DWORD decimal)

    You can set the value to pretty much anything you like.

    Increase FileSystem filter cache

    To enable the file system filter cache, speeding up overall performance with file mangement:

    HKLM\System\StorageManager\Filters\fsreplxfilt\ReplStoreCacheSize = 4096 (DWORD decimal)

    To return the file system filter cache to zero:

    HKLM\System\StorageManager\Filters\fsreplxfilt\ReplStoreCacheSize = 0 (DWORD decimal)

    You can set the value to pretty much anything you like.

    XDADeveloperWiki - WM5_Tweaks_Performance

    Posted by krsuncom
    블랙잭이야기2007. 8. 10. 21:28

     

    Samsung Blackjack tips and tricks

    The business development team at Vertigo recently standardized on the Samsung Blackjack phone.

    It's fantastic hardware. The smartphone has finally shrunk to a pocketable form factor after all these years. Ironically, it's the software that needs to improve -- the Windows Mobile 5.0 OS on the phone leaves a lot to be desired. It's not exactly intuitive.

    I dug through a massive tips and tricks thread trying to figure out ways to work efficiently in Windows Mobile on the Blackjack. Here's a summary of the best:

    • Hard reset the phone by holding down UP and POWER to boot. It will ask to confirm.
    • You can adjust the brightness of the screen in Settings under Power (scroll down)
    • Pressing and holding the Home button brings up the task manager
    • Pressing and holding the jog dial brings up a list of apps
    • Pressing the power button brings up the quicklist
    • Hold down message key to turn off backlight on screen.
    • Fn + B = Toggle Bluetooth
    • Press the V key for PAGE DOWN and the T key for PAGE UP.
    • Hold down any key while typing to get its "alternate" character. i.e. Hold down the Q for a moment and you'll get the + symbol. This is nice if you don't like hitting Caps/Shift Q to get it.
    • if you are reading an email, press the center d-pad "action" button... it will take you to the new contact entry with that persons email address already filled in.
    • Apparently the phone doesn't support automatic keylock, you have to hold down the "end call" key for 3-4 seconds and it locks the phone.
    • When you have a URL in the address bar hold down the BACK button above the red hang up button and it will delete the entire URL.
    • In any of the edit fields (contacts, I.E., and others) if you hold down Undo (top right U-Turn with an arrow) it will delete the contents of the field you are in.
    • There is no way to get periodic reminder tones for missed calls or messages. This little app addresses that deficiency.
    • Holding down the back button on the right hand edge of the device launches the Camera app for taking pictures.

    If you want to sync data between the phone and the computer, you can use ActiveSync on Windows XP, or Windows Mobile Device Center on Windows Vista. WMDC replaces ActiveSync, but is still in Beta 3 as of right now.

    You'll probably want a few apps on your phone. Remember this is Windows Mobile 5.0, not PocketPC, so be sure to pick the right version of the app. I highly recommend starting with a freeware registry editor such as PHM Registry Editor. There are a lot of cool settings that are only exposed through the phone's registry*. I installed "regedit.Stngr_ARM.CAB" on the blackjack and it worked fine for basic registry editing. Once of the first things you'll want to do is turn off the "application lock", either via editing the registry or by downloading and running a small registry edit file named "appunlock.cab" on your phone.

    Battery life is OK, but not great. That's probably why it comes with an extra battery and a standalone battery charger out of the box. The phone does trickle charge over USB when it's connected, however, I couldn't get it to charge at all via USB when the battery was very low and the phone wouldn't turn on. There are pictures of the extended battery in action here. This might be a good upgrade if you're running into battery issues.

    The phone has a lot in common with the Motorola Q, so often tweaks and files for the Q will work on the Blackjack. You can download new start page designs that work fine from koodezine and qusers. Here's the one I'm using:

    And remember, the phone accepts MicroSD cards for additional storage-- they're tiny compared to their SD and MiniSD brethren.

    * that's right, there's a Windows Registry on a phone. Depressing but true.

    posted on Friday, January 12, 2007 4:50 PM by jatwood

    원문 : Jeff Atwood : Samsung Blackjack tips and tricks

    Posted by krsuncom
    개발이야기2007. 8. 6. 19:08

    원문: 요기

    HKLM/Software/Microsoft/Bluetooth/A2DP/Settings
    Add new dword, Value name=BitPool; Value data=48 (Decimal)
    Modify, Value name=UseJointStereo; Value data=0 (Decimal, Originally 1)
    For BitPool:
    Microsoft suggests the following bitpool values for optimal buffer sizes.
    30 - Low audio quality
    40 - Medium audio quality
    48 - High audio quality
    58 - Excellent audio quality
    Chose one you like. I think 48 is good enough.
    For UseJointStereo: use 0 instead of 1, then you got the real stereo.......
    BTW, if you lost your modification after soft reset, you might try to "totally" close the reg editor you use before soft reset.
    And chosing an "appropriate" A2DP headset is quite important. Some just don't work well with this device

    HowardForums: Your Mobile Phone Community & Resource - Bluetooth Stereo (A2DP) on Qtek 8500

    Posted by krsuncom
    개발이야기2007. 8. 6. 12:53

     

    Windows CE Developers FAQ

    Welcome to the CEGadgets Windows CE Developer FAQ page! Here you will find answers to common (and not so common) Windows CE development questions. This FAQ tries to avoid basic Windows CE issues (what is Windows CE, what is activeSync) and instead serves as a technical document discussing Windows CE specific development issues. Also, this FAQ avoids embedded specific issues, and focuses more on application development.

    If you have something you want to add, or find a problem, send a note to faq@cegadgets.com explaining the problem or addition. I will update the FAQ ASAP and give you credit for it as well. Thanks!

    This FAQ was last updated 27-Mar-01. Also, notice that new and updated items show in a separate section (as well as in the main contents list). Items will remain in the new/updated section for one week.

    1. General
    1.1 Why should I write software for Windows CE?
    1.2 What does the CE in Windows CE stand for?
    1.3 I want to learn about Windows CE development. Where should I start?
    1.4 What books are available for Windows CE developers?
    1.5 What are some other developer related Windows CE websites?
    1.6 Where can I find information on DevCon 99?
    1.7 I need to learn CE in a hurry - can I take a class?
    1.8 Things to consider before you design that new Windows CE application.
    1.9 I want to develop using Visual C++. What do I need?
    1.10 I want to develop using Visual Basic. What do I need?
    1.11 What other development tools are available for windows CE?
    1.12 How do I report bugs (or feature requests) in Windows CE development tools?
    1.13 Should I get a copy of Platform Builder 2.11/2.12?
    1.14 Where can I find a MIPS or SH3 disassembler?
    1.15 Can I write DCOM application under Windows CE?
    1.16 Is the SH4 binary compatible with the SH3?
    1.17 Does Windows CE support COM?

    2. Visual C++ Issues
    2.1 What do I really need to write C++ apps for Windows CE?
    2.2 Do I need to purchase the Windows CE Toolkit for C++ or Basic to develop for CE?
    2.3 Can I use Visual Studio SP3 with the Toolkit for Windows CE?
    2.4 Can I use Windows 95/98 to build Windows CE applications?
    2.5 My MFC app doesn't run on the device the first time I try?
    2.6 I keep getting internal compiler errors? How do I make them go away?
    2.7 I use a serial connection to debug and use programs like Remote Spy, but the serial connection speed is slow. How can I make it faster?
    2.8 How can I copy files to the emulator?
    2.9 Can I use C++ exceptions in my Windows CE application?
    2.10 Can I use STL in my Windows CE application?
    2.11 I populate my combobox using the resource editor, yet when I run my application under CE all I see is garbage. What can I do?
    2.12 Is there a way to edit my Visual C++ files on my handheld?
    2.13 How does compiler optimization affect Windows CE executables?
    2.14 Where is the Windows CE C runtime library? Is source for the runtime available?
    2.15 How can I develop applications for Windows CE 1.0?
    2.16 I want to port my Windows desktop application to Windows CE.  What issues will I face?
    2.17 I can compile for the MIPS and SHx processors, but I don't see an option for the StrongArm.  What can I do?

    3. Third Party Tools and Hardware
    3.1 Which databases are available on the Windows CE platform?
    3.2 Are there any Text-To-Speech engines for the CE platform?
    3.3 I want to write an MP3 decoder for Windows CE. Where do I start?
    3.4 Are there any printer libraries for Windows CE?
    3.5 How can I work with Pocket Outlook data?
    3.6 Is there an FTP client API available for Windows CE?
    3.7 How can I copy-protect my Windows CE application?
    3.8 Where can I find an XML parser for Windows CE?
    3.9 Is GCC available for the Windows CE platform?

    4. Windows CE Overview
    4.1 How many processes can Windows CE support?
    4.2 How many threads can Windows CE run?
    4.3 What does the basic Windows CE memory map look like?
    4.4 What is Execute-In-Place (XIP) and what does it mean for me?
    4.5 I want to make my own shell. Where should I start?
    4.6 Can I trash my object store by turning off the power during a file operation?
    4.7 How much stack space can I use per thread?
    4.8 Why does my Windows CE 2.0 stack blow out, even if I allocated it at compile time?
    4.9 What kind of limitations will I encounter using the CE Database?

    5. General Windows CE Development
    5.1 I can't find an API that I need. What should I do?
    5.2 How can I insure only one instance of my application?
    5.3 How can I make I application startup on system startup?
    5.4 How can I prevent other applications from running while my application is active (how can I keep users from accessing the Start Menu)?
    5.5 How can I change task bar settings such as Auto Hide?
    5.6 How do I keep my device from auto-suspending?
    5.7 How do I detect power-on?
    5.8 How can I programmatically turn off the device?
    5.9 How can I get battery status?
    5.10 How can I determine the device type?
    5.11 How can I determine the device name?
    5.12 How can I initiate a connection to the desktop?
    5.13 How can I tell if ActiveSync is currently running?
    5.14 How can I programmatically change the display brightness?
    5.15 How do I reboot/reset the device?
    5.16 How can I change the size of the object store?
    5.17 How can I reprogram the buttons on the device? Can I use hardware buttons to initiate application functionality?
    5.18 I am writing a dialog based application. Why doesn't an entry appear in the taskbar or in the task list?
    5.19 I want to modify the contact database. What is the contact database name or CEOID?
    5.20 What is Venus?
    5.21 What is Cedar?
    5.22 When is MSMQ going to be available?
    5.23 How do I get the time under CE - or, what happened to time()?
    5.24 How can I convert a pwi to an rtf?
    5.25 How can I determine whether the device has been rebooted/reset since the last time the application ran?
    5.26 How can I make a resource only DLL under Windows CE?
    5.27 How can I determine the current SIP state?
    5.28 How can I change the current SIP state?
    5.29 How can I enable or disable the Jot SIP?
    5.30 I need an ownerdrawn listbox but they are unsupported. What should I do?
    5.31 How can I implement a list view with a checkbox next to each item?
    5.32 What is POOM and should I use it?
    5.33 How can I programmatically launch a dial-up connection (without using the RAS API)?
    5.34 How can I write or read a physical memory location?
    5.35 How can I enumerate Windows CE databases from the desktop?
    5.36 I need to use IrDA to communicate with other devices. Where should I start?
    5.37 How can I show the wait cursor, especially from VBCE?
    5.38 How can I print from a Windows CE application?
    5.39 How do I register a control under Windows CE?
    5.40 I am having problems getting CE RAPI to work properly. What can I check?
    5.41 I want to create a mail message then send it. Can I do this using the Mail API?
    5.42 How can I display GIF, JPG, BMP, or XBM images in my application?
    5.43 Why can't I display 16-bit images from my application using imgdecmp.dll?
    5.44 What steps can I take to make my software ready for foreign markets?
    5.45 How can I open, change and delete mail messages?
    5.46 How can I use ATLCE to sink events?
    5.47 Do the Pocket Office applications support automation? Can I use them from VCCE, VBCE?
    5.48 I am using VBCE and need to call API functions that require structures, but UDT's are not available.  What can I do? What should I watch out for?
    5.49 How can I turn on the device when the serial port has activity?
    5.50 How can I start applications on device connect/disconnect?
    5.51 Do you have any tips on getting more out of HTMLView?
    5.52 How do I get the name of a ADOCE table if I only have an Table ID number?
    5.53 How can I determine the amount of free space on storage cards, on the device and in memory?
    5.54 How can I disable the OK button on my Windows CE dialogs?
    5.55 Which common dialogs are supported under Windows CE?

    6. Palm Size Development Issues
    6.1 If I don't implement an exit menu item, is there anything I can do to make closing the application easier?
    6.2 Why should I pay any attention to WM_HIBERNATE?

    7. Common Executable Format (CEF)
    7.1 What is CEF?
    7.2 Can I use CEF in my current applications?
    7.3 Can I have a CEF based dll or ocx?
    7.4 Why should I use CEF?
    7.5 Is CEF as fast as an application compiled for the platform?
    7.6 If I am only targeting one specific device should I use CEF?

    8. Installation
    8.1 What install packages are available?
    8.2 How do I programmatically open a cab file on a CE device?
    8.3 How do I start an installation from the desktop?
    8.4 How can I keep a cab file from being erased after it is installed?
    8.5 What command line switches are available for CeAppMgr?
    8.6 My install set is having trouble registering controls on Palm-Size PC devices. What am I doing wrong?
    8.7 How can I programmatically open a .CAB file?

    9. Help
    9.1 What format is Windows CE Help in?
    9.2 How should I create help files?
    9.3 How can I programmatically launch help?

    10. Internal/Undocumented/Hack Corner
    10.1 Ways to explore windows CE.
    10.2 Hack while you can - it will be harder soon.

    10.3 BinaryCompress/BinaryDecompress - built in compression for windows ce

    10.4 SetProcPermissions - give your process access to other processes!
    10.5 RegFileCopy - make an instant copy of the registry
    10.6 GetFSHeapInfo - pointer to object store in physical memory
    10.7 Predict.dll offers access to word prediction on Palm Size PC's
    10.8 Inspect ROM on the Casio E-100 and find interesting things.
    10.9 SetWindowsHookEx really does work, sort of.

    10.10 Calstore.dll can be used to access the task database API set.
    10.11 How can I reformat a compact flash card?

    11. Known CE bugs
    11.1 Createprocess on pspc devices doesn't work
    11.2 MFC CE 6.0 - Gettime with city set to foreign city. Returns 7/22/1863.
    11.3 The voice control will not write recordings to any filename except the default.
    11.4 The 6.0 StrongArm compiler creates buggy code.

    12. Windows CE Gossip Corner
    Note: These are all unverified and included just because they are interesting.
    12.1 PPTP will be available in 3.0 but not 2.12.
    12.2 A new grid control will be released soon.

    12.3 The 2.12 version of Imgdecmp.dll supports 24-bit bitmaps.
    12.4 When will VCCE 6.5 be released?

    1. General

    1.1 Why should I write software for Windows CE?

    PDA's are booming! Marketing research organizations like IDC project 40% annual growth in handheld device through 2001. Handheld's are also taking off in the enterprise, and are predicted to be the next big enterprise computing platform.

    IDC predicts that consumer 'info appliances' will surpass PC sales in 2001, reaching almost 20 million units.

    Windows CE is poised to capitalize on this rapid growth. Microsoft is positioning Windows CE to be an easy choice for enterprise development and use, and is working with many OEM's to promote general consumer use and acceptance of Windows CE.

    If you have any experience developing for the Windows platform, you can develop for Windows CE. Other platforms cause you to learn new tools and API's, and do not have the broad support of Microsoft and it's partners. Leverage your knowledge and Microsoft's marketing muscle and start coding for CE!

    1.2 What does the CE in Windows CE stand for?

    While Microsoft claims the CE does not represent any particular meaning, it has been said that it stands for Consumer Electronics (for the devices CE targets) or Compact Edition. When you are really frustrated with a particular problem or shortcoming you can refer to it as Windows CE (Crippled Edition).  I also like Caveat Emptor.

    1.3 I want to learn about Windows CE development. Where should I start?

    There are many excellent development resources for Windows CE. First, check out the Windows CE related newsgroups:

    Microsoft.public.win32.programmer.wince
    Microsoft.public.vb.vbce
    Microsoft.public.windowsce
    Microsoft.public.vc.vcce
    Microsoft.public.ado.wince
    Microsoft.public.windowsce.developer.betas
    Microsoft.public.windowsce.embedded

    Also, check www.deja.com for a nice archive of Windows CE posts going back years. This is probably my number one Windows CE resource.

    I also really like the windowsce-dev mail list.  It probably has the purest technical Windows CE content of any source, and is monitored by some of the best CE developers I've seen.  It contains a mix of embedded and application development questions.  I also tend to see issues pop up on this list before they show up on the regular newsgroups.  For example, I read about the Platform Builder price increase 3 weeks before it started being discussed on the newsgroups.  To join, send an email to WindowsCE-Dev@Lists.WindowsCE.com

    Check out some of the books mentioned in this FAQ, and visit some of the other Windows CE developer websites.

    Finally, there is nothing like experience. If you can afford it, purchase the Microsoft development tools, NSBasic or one of the other development tools available for the platform. Try building a few applications. If you have previous Windows development experience you will find Windows CE development to be only mildly painful ;-)

    1.4 What books are available for Windows CE developers?

    Here is a list of some of the Windows CE development books available, in no particular order:

    • Inside Windows CE - John Murray
    • Programming Embedded Systems for Microsoft Windows Ce - Jeff McLeman
    • Professional Visual Basic Windows CE Programming - Larry Roof
    • Programming Windows CE - Douglas Boling
    • Windows CE 2 Programming for Dummies - Nick Gratten
    • Essential Windows CE Application Programming - Robert Burdick
    • Windows CE Developers Handbook - Terence Goggin
    • Windows CE from the Ground Up - Jean Louis Gareau (annabooks web site).
    • Sams Teach Yourself Windows CE Programming in 24 Hours - Bsquare
    • Windows Ce : Application Development - Keven Millsap, Marshall Brain

    1.5 What are some other developer related Windows CE websites?

    Here are some CE developer websites:

    Samples, SDK's and other tools.

    Information and advice on Visual C++ for CE.

    Information and advice on Visual Basic for CE. Home of the vbceUtils control for Visual Basic for Windows CE.

    Cool API samples and demoware applications for Windows CE.

    Samples from DevCon 99.

    Some MFC based Windows CE samples.

    ActiveX controls for Windows CE developers.

    Used to be RoadCoders.com - general Windows CE articles and other development info.

    1.6 Where can I find information on DevCon 99?

    Take a look at this excellent site. Microsoft has posted video for all of the sessions at DevCon 99 in Denver. Go to http://events.microsoft.com/isapi/events/pages.asp?s=63814&p=620 for more information.

    1.7 I need to learn CE in a hurry - can I take a class?

    Let's say you need to learn Windows CE ASAP! Depending on your budget and time constraints you could attend a class or conference. The following companies offer beginning and advanced Windows CE training:

    David Solomon Expert Seminars www.solsem.com
    Annabooks www.annabooks.com
    The Paul Yao Company www.paulyao.com

    Also, Microsoft has an annual Windows CE developer's conference, usually somewhere between April and June.

    Finally, if you really want to learn now (or have no budget), go to http://events.microsoft.com/isapi/events/pages.asp?s=63814&p=620 and check out the video samples. Doug Boling gave did a one-day "Windows CE for application developer's" seminar at DevCon and it is available here.

    If you know of others, or want to add your seminar, class or conference, send an email to faq@cegadgets.com and we'll get you added to the list.

    1.8 Things to consider before you design that new Windows CE application.

    Click here to read the entire article.

    1. Read the logo requirements before you design your application.
    2. Make life easy for your users - design for your device.
    3. Remember power issues - polling, serial port waste power
    4. Handle WM_HIBERNATE
    5. Think about internet connectivity.
    6. Check GNU for portable source code - your app may already be written.
    7. Remember, you can't use VB on Palm Sized PC's running Windows CE 2.0 - 2.11 only.
    8. Write a help file for your application
    9. Plan to write an installer - it's easy
    10. Test on actual devices. The emulator is nice but it is not a true Windows CE device.
    11. Don't use floating point operations on if you can help it.
    12. Buy a Socket Communications ethernet card - it is worth the money.

    1.9 I want to develop using Visual C++. What do I need?

    Developing using Visual C++ is nice because it will work on any CE platform.

    • The Visual C++ Toolkit for Windows CE 5.0

    This is an older version of the Windows CE development environment. It is missing some nice features offered by 6.0, and does not have support for the PSPC 1.2 SDK, ethernet debugging, etc. Interestingly, it does offer an object store browser that was removed in version 6.0. The 5.0 toolkit also lets you target Windows CE 1.0. The 6.0 product does not.

    To develop using Visual C++ 5.0 you will need the following:

    Visual C++ 5.0, Professional or Enterprise edition
    Visual C++ Toolkit for Windows CE 5.0
    HPC or PSPC SDK, downloadable for free from the Microsoft web site.

    • The Visual C++ Toolkit for Windows CE 6.0

    The current C/C++ development environment for Windows CE.

    To develop using Visual C++ 6.0 you will need the following:

    Visual C++ 6.0, Professional or Enterprise edition
    Visual C++ Toolkit for Windows CE 6.0
    Any of the CE SDK's, downloadable for free from the Microsoft web site.

    1.10 I want to develop using Visual Basic. What do I need?

    First, you need to have an HPC, HPC Pro or a Palm Size PC running 2.11! Many people have purchased the Visual Basic toolkit, written an application and attempted to copy it to a Nino or some other 2.01 device. It does not work! Below is a list of valid Palm Size devices:

    Casio E-15, E-100, E-105
    HP Jornada 420 and 428
    Compaq Aero A2xxx
    Philips Nino 520
    Everex FreeStyle 540
    Any new Palm Size device released after 9/11/99.

    Take a look at the official Microsoft statement http://msdn.microsoft.com/cetools/platform/ppcfeatures.asp under the heading of "Visual Basic Runtime in ROM".

    Below are descriptions of the available Visual Basic toolkits.

    • The Visual Basic Toolkit for Windows CE 5.0

    The first version of basic that supported Windows CE. It was a challenging and generally unpleasant experience developing software for Windows CE using this tool. While version 6.0 has shortcomings, it is worth the upgrade price to make the switch to the Visual Basic toolkit for Windows CE 6.0. To develop using the Visual Basic, you will need:

    Visual Basic 5.0, Professional or Enterprise edition
    Visual Basic Toolkit for Windows CE 5.0
    The HPC SDK

    • The Visual Basic Toolkit for Windows CE 6.0

    The current version of Visual Basic for CE. To develop using the Visual Basic, you will need:

    Visual Basic 6.0, Professional or Enterprise edition
    Visual Basic Toolkit for Windows CE 6.0
    The HPC SDK, HPC Pro SDK or the PSPC SDK v. 1.2.

    1.11 What other development tools are available for windows CE?

    Check out the full article, with comments and pricing on each tool.

    1.12 How do I report bugs (or feature requests) in Windows CE development tools?

    Microsoft has a couple of useful email addresses:

    Windows CE development tools feature suggestions:
    wcetwish@microsoft.com

    Windows CE Development Tools Bug Reporting:
    wcetbug@microsoft.com

    1.13 Should I get a copy of Platform Builder 2.11/2.12?

    As an application developer you may think Platform Builder doesn't apply to you. While this is mostly true, Platform Builder includes a wealth of information on the internals of Windows CE, including prototypes for functions not documented in the SDK. The Platform Builder help files also contain great information about the workings of the operating system. While this isn't necessarily going to help you make a better list control, you can find interesting little features like RegCopyFile, which copies the entire registry to a file, or PowerOffSystem.

    Unfortunately, Platform Builder is a little pricey, and rumor has it PB will be more so when 2.12 is released. Microsoft will charge up to $3000 for Platform Builder and also require a purchase of 250 Windows CE licenses, putting the total price around $13,000! Not to worry, though.  If you really want to get a copy of Platform Builder 2.12 for evaluation purposes, you can purchase the Universal MSDN subscription (which is roughly $2500 I believe).  MSDN Universal not only comes with PB 2.12, but it also contains all the toolkits, SDKs, development tools, and operating system you will need to develop Windows CE software (or any other software for that matter). 

    A 60-day trial edition of Platform Builder 2.12 is included with a subscription to MSDN Universal. You can also obtain a trial edition from a distributor for a small fee, ~ $25. See http://www.microsoft.com/embedded/distributors/distrib.asp for a list of distributors.

    1.14 Where can I find a MIPS or SH3 disassembler?

    Check out http://www.datarescue.com/idawindowsce.htm for a Windows CE code disassembler.

    Delosoft also produces a disassembler for MIPS and SH3 executables. Check out www.delosoft.com for more information.

    1.15 Can I write DCOM application under Windows CE?

    Windows CE 2.11 and earlier do not contain a DCOM implementation - only inproc servers are allowed at this time. However, is has been mentioned that Microsoft does have DCOM for CE in beta (as of 9/99). Perhaps it will be included with CE 3.0 (Cedar) if everything goes as Microsoft plans.

    Intrinsyc has a "DCOM" implementation for CE 2.XX+. While not identical to Microsoft's desktop DCOM implementation, it offers similar functionality. More info can be found at http://www.intrinsyc.com.

    1.16 Is the SH4 binary compatible with the SH3?

    I found this interesting exchange on the windowsce.com developer mailing list:

    When I run any SH3 applications on an SH4 device the program starts to load, but the busy icon freezes and never returns.

    Response:

    Some folks from Hitachi were here Tuesday promoting their new CE unit, which uses an SH4 chip. I asked whether I would have to recompile my app, and they said YES. In other words, the SH3 and SH4 are not binary compatible.

    So in other words, according to the post the SH4 is not backwards compatible with the SH3. I have seen other posts mentioning similar problems; the SH3 application will run on an SH4 but crash in peculiar places, for no apparent reason. These same people say that recompiling their app for SH4 seemed to resolve the problems. Also, the compiler warns if an SH3 app is being downloaded to an SH4 machine.

    1.17 Does Windows CE support COM?

    Windows CE only supports in-process COM object.  There is talk of extending COM functionality in the next major release of Windows CE.  Here are a few references for getting started with COM and CE:

    • "How to Write and Use ActiveX Controls for Microsoft Windows CE" from the MSDN
    • "The Tools You'll Need to Build Embedded Apps: Windows CE Toolkit for Visual C++ 6.0" from MSJ July 1999. There's a section called "Desktop ActiveX Controls".

    I have used ATL quite a bit on the CE platform, and aside from one minor problem with connection points, everything works well.  All of the controls available on the CEGadgets.com main page are written using ATLCE.

    See Can I write DCOM applications for Windows CE for information on DCOM and CE.

    2. Visual C++ Issues

    2.1 What do I really need to write C++ apps for Windows CE?

    To develop using Visual C++ 6.0 you will need the following:

    • Visual C++ 6.0
    • Visual C++ Toolkit for Windows CE 6.0
    • Any of the CE SDK's, downloadable for free from the Microsoft web site.

    You will also need to be running Windows NT 4.0 with SP3 or greater installed.  You can develo using Windows 95/98 as well, but won't be able to use the emulator (which requires a UNICODE operating system).

    2.2 Do I need to purchase the Windows CE Toolkit for C++ or Basic to develop for CE?

    Yes, you do need to purchase the C++ or Basic Toolkit. Microsoft gets about $200 for it, but there are third party software vendors that will sell it to you for less. buy.com has it for $167.

    The toolkit contains the compilers and linkers needed to create executables for Windows CE.  It contains support for the various processor types supported by Windows CE.

    The "SDKs" contain the various header and library files used in actually writing the application.  Each SDK contains any customizations to the Win32 API needed by a particular platform, such as the addition of the SIPINFO APIs for Palm-size PCs.

    The Windows CE SDKs are free and readily downloadable at: http://msdn.microsoft.com/cetools/downloads/devkits.asp

    You can also use tools like NSBasic ($99) to develop directly on the device...

    2.3 Can I use Visual Studio SP3 with the Toolkit for Windows CE?

    Microsoft states that SP3 is incompatible with WCE toolkit at this time (9/2/99).

    2.4 Can I use Windows 95/98 to build Windows CE applications?

    You can run VC 5.0 under Windows 95/98 but you will not be able to use the emulator.

    You may be able to run VC 6.0 under Windows 95/98 (but you will not be able to use the emulator). It was mentioned on one of the CE newsgroups that as of 6.0, the Windows CE Toolkit will not allow installs to 95/98, but I have only seen this comment once. I haven't tried this (I did use the 5.0 toolkit on 95 and 98 without trouble). However, several other people have written stating that the 6.0 Toolkit does install under 95/98, so I'd bet that there really isn't any problem with this approach.

    2.5 My MFC app doesn't run on the device the first time I try?

    Some files (like mfcce20d.dll) are not copied properly during the installation of the toolkit. Check the following page for more info:

    http://support.microsoft.com/support/kb/articles/q187/6/16.asp

    2.6 I keep getting internal compiler errors? How do I make them go away?

    The Windows CE compiler is a little finicky when it comes to code. If you get an error like:

    myfile.cpp(234): fatal internal error CBE7002:
    try changing your code around a little. Move your declarations, remove extra spaces, etc. Basically just change the code style a little bit and try to compile again. This usually fixes the problem.

    2.7 I use a serial connection to remotely debug my x86 applications, but the serial connection speed is slow. How can I make it faster?

    Contact MS support for a fix to the TCP/IP stack to increase the speed of Apps debugging with DevStudio Add-in. Note that this applies to remote debugging on x86 based platforms (CEPC, etc).

    2.8 How can I copy files to the emulator?

    After successfully installing your SDK, look for the Windows CE Platform SDK menu item under Start, Programs. Launch 'Emulation Environment for [platform name]'. This will launch a console window. At this point, type empfile -? for options, or type empfile -c [source filename] wce:[taregt location in object store].

    For example, empfile -c e:\CEproject\myapp.exe wce:\windows\start menu\myapp.exe will copy myapp.exe into the emulator object store.

    2.9 Can I use C++ exceptions in my Windows CE application?

    C++ exceptions are not supported on Windows CE. But Win32 exceptions are. You can use the __try and __except keywords (and also the __try and __finally keywords). MFC exceptions are also supported (TRY, CATCH, etc.)

    However, the key words for C++ exceptions (try, catch, and throw -- with *no* leading underscores) are not supported.

    2.10 Can I use STL in my Windows CE application?

    STL relies on exceptions, and since exceptions are not supported under Windows CE, STL cannot be fully implemented. There are a few ports of STL to CE that do not rely on exceptions. Take a look at:

    Search www.deja.com for information on STL and CE for more information. If you have information on other STL ports let me know.

    2.11 I populate my combobox using the resource editor, yet when I run my application under CE all I see is garbage. What can I do?

    Apparently the resource editor treats the text as ANSI, not UNICODE. You have to populate the listbox programatically.

    2.12 Is there a way to edit my Visual C++ files on my handheld?

    Logical Sky has produced a syntax highlighting C++ editor for use on HPC and HPC/Pro platforms. Here's a recent press release:

    Logical Sky is proud to announce the release of CEdit for Windows CE!

    CEdit is a color syntax hilighting C++ editor for Windows CE. CEdit is designed for C++ developers who need to work with their source code when they are away from their desks. CEdit is compatible with Microsoft Visual C++. It allows you to open a Visual C++ project file on your handheld, so that you will have quick access to all of your C++ files.

    CEdit is designed for MIPS and SH3 based H/PCs. CEdit will not run on a palm-sized CE device.

    A free fully functional 30 day demo is available from: http://www.LogicalSky.com.

    CEdit is $49.95.

    2.13 How does compiler optimization affect Windows CE executables?

    I came across the following interesting post in the windowsce-dev digest:

    I've been working on a project targeted to the SH3 processor and I noticed that the Release mode EXE for the SH3 was actually larger that the Debug version with symbols!  After a little thought I remembered an article in MSJ a year or so ago or so discussing the various optimizations of the x86 compiler in DevStudio.  IT said that often the default optimization for speed can be slower that the optimizations for size and that it can get worse for RISC processors.  So I compiled for Size instead of speed and there were MAJOR differences in EXE size.

    X.EXE CPU Debug Opt Size Opt Speed
    SH3 176K 131K 187K
    x86 189K 120K 136K

    Additionally I couldn't detect any difference in the speed of the code in a relatively GUI intensive app.

    Just thought I share that it's actually worth the time spent trying different optimizations, at least on the RISC processors.

    2.14 Where is the Windows CE C runtime library? Is source for the runtime available?

    Starting with Windows CE 2.01, Microsoft folded the C runtime directly into coredll (in other words, Windows CE 2.0 for the HPC is the only version that did not do this).  One reason for doing this is to help executables stay as small as possible.  With the runtime and API set in ROM, user applications will stay very small.

    Microsoft has not released source to the Windows CE C runtime.

    2.15 How can I develop applications for Windows CE 1.0?

    If for some reason you are stuck doing development for Windows CE 1.0, you will need the Visual C++ 5.0 and the Windows CE Toolkit for Visual C++ 5.0. VC++ 6.0 does not support the WCE 1.0 platform.

    2.16 I want to port my Windows desktop application to Windows CE.  What issues will I face?

    There are many issues to consider when porting your application to Windows CE.  You will face many obvious issues, like interface changes, power and memory constraints.  However, you will find many not-so-obvious issues to contend with, as well.

    Perhaps the largest issue you will face is making your application UNICODE compliant.  Windows CE is a UNICODE operating system, and all strings used in API calls must be UNICODE.

    You may  also need to deal with the following issues: missing API's, thread issues, floating point use, sockets, etc.

    Check out the full article, Common Windows CE Porting Issues, for more information.

    2.17 I can compile for the MIPS and SHx processors, but I don't see an option for the StrongArm.  What can I do?

    Download and install the HPC/Pro SDK from http://msdn.microsoft.com/cetools/downloads/hpcprosdk.asp. This SDK  contains what you need to generate executables for the StrongArm using your Windows CE Toolkit.

    3. Third Party Tools and Hardware

    3.1 Which databases are available on the Windows CE platform?

    Check out the full article, Third Party Database Tools for Windows CE, here!

    There are a phenomenal amount of database tools available for the Windows CE platform.  Here is the short list of available CE databases:

    3.2 Are there any Text-To-Speech engines for the CE platform?

    The are a few text to speech (TTS) engines for Windows CE.

    Check out Lernout and Hauspie's TTS engine for Windows CE. This is the same speech engine used in the AutoPC. Unfortunately, it is only available for SH3 processors at the current time. See http://www.lhsl.com/ssyn/tts3000wince.asp for more information.

    You should also check out the Dectalk TTS engine for Win CE. Apparently, Dectalk was purchased by Fonix Corp.  See http://www.fonix.com/products/dectalk/ for more information.

    Another entry to the Windows CE TTS field is from Elan. The Elan TTS toolkit was released 1-Nov-99 and was $495US at that time. It will support the MIPS and SH processors, and will cover the following languages: US English, UK English, French, German, Spanish, Brazilian and Russian.

    Note: $495US covers the developer license. The toolkit also requires distribution royalties, which depend on the number of units you ship. Contact Elan for more information - info@elan.fr, or see their web site at www.elantts.com.

    3.3 I want to write an MP3 decoder for Windows CE. Where do I start?

    There are currently two MP3 players for the Windows CE platform, and both use the Xaudio SDK to actually do MP3 decoding/playback. The Xaudio SDK is easy to use, well documented, and FREE for personal use (you have to license Xaudio for commercial distribution).

    Support for Xaudio development is good as well. Check www.xaudio.com for more information and to download the SDK.

    If you really want to "roll your own", there is source for mp3 decoders around on the internet. Try www.mpeg.org for more information.

    3.4 Are there any printer libraries for Windows CE?

    Check out FieldSoftware's PrinterCE ActiveX control. It provides basic print output routines for CE. FieldSoftware offers a barcode package as well.  PrinterCE is license based, with prices ranging from 19.95 for the basic library, up to $1000 for PrinterCE Plus with barcode support, including 500 licenses.

    From a FieldSoftware newsgroup post:

    PrinterCE makes sophisticated printing from VBCE simple (no worries about device contexts and BitBlits and DIBsections, etc). Plus, PrinterCE goes beyond just plain printing by adding support for printing from Palm-sized PCs!!! as well as printing barcodes, using specialized label printers, and much more.

    Get more information at: www.fieldsoftware.com

    3.5 How can I work with Pocket Outlook data?

    You should definitely check out the POOM SDK. POOM stands for Pocket Outlook Object Model, and represents a standard, easy to use interface into Contacts, Calendar and Tasks on your Windows CE device. Use this in place of modifying the contact, calendar or task databases directly, or even the AddressCard API.

    You can download the POOM SDK at msdn.microsoft.com/cetools/platform/poomsdk.asp.

    Along with offering basic access to Pocket Outlook, POOM offers some cool features like ReceiveFromInfrared and SentToInfrared, which will squirt the selected object(s) in/out the infrared port. It also allows you to work with cities on the device.

    3.6 Is there an FTP client API available for Windows CE?

    While an FTP client is documented in the Windows CE help, no FTP client actually ships with OEM devices.  I have heard two explanations for this.  One, given at CE DevCon 99, was that it was up to the OEM to ship or leave out FTP support, and most left it out.  The other is mentioned in the CE documentation.  While FTP functions are documented, there is a statement in the remarks section: "Inetftp.dll is available only for Intel x86 processors."

    Here are two third-party sources for Windows CE FTP controls:

    Ruksun makes an FTP client, and has packaged some of their code into a simple to use ActiveX control for developers. Contact komal@ruksun.com for information on the control and licensing.

    Dev-soft has a massive set of internet controls for Windows CE developers, including support for HTTP, FTP, IMAP, LDAP, NNTP, SMTP, etc. Here's a snippet from their site re: FTP functionality.

    FTP - Used to transfer files using the FTP protocol. Very easy to use with a 'plug and play' interface. Supports most corporate firewalls, and has an extensible architecture, enabling access to non-standard FTP server features (mostly found in mainframes).

    The toolkit is also royalty-free.

    3.7 How can I copy-protect my Windows CE application?

    DESkey sells a dongle that plugs into a PCMCIA or compact flash card slot.  Take a look at http://www.des.co.uk/ for more information.  A free developer's kit is available at www.des.co.uk <http://www.des.co.uk>.

    Here's some information about DESKey sent to me by the company:

    Manufactured to CompactFlash Standard Type I, this device will allow you to protect your Windows CE 2.x applications against unlicensed use / piracy. In addition to this the DESkey API provides the means for your application to encrypt and decrypt data through the DESkey CF Card.

    Features:

    CompactFlash Design
    Random Number Generator
    Code or data from your application may be fed through the DESkey for encryption.
    Unique 8 Byte Password
    Memory - 1,024 bytes of memory as standard. Up to 32K is available on request.
    Anti-Emulation Algorithm
    The DK3CF+ supports all popular processors including MIPS, SH3 etc.

    Also, take a look at R.I.A. TerraSystems (www.mappad.com).  They offer a key-ring device that works by sending a unique ID to the CE device's infrared port.

    There are various software-only based protection mechanisms as well, like creating secret entries in the registry, computing a unique ID based on the user and device characteristics, or requiring a valid serial number (supplied by the author) before allowing the application to run.

    3.8 Where can I find an XML parser for Windows CE?

    On October 13, 1999, mov Software announced a port of EXPAT to Windows CE.  From the post:

    EXPAT is a conforming and non-validating XML 1.0 parser, originally written by John Clark. More information about EXPAT can be viewed at http://www.jclark.com/xml/expat.html

    EXPAT is distributed via the GPL or MPL 1.1 licenses. To download the source code for EXPAT for Windows CE please visit http://www.movsoftware.com/devres.htm

    EXPAT has been verified to work on the following platforms:
    CE2.11
        SH3, SH4, ARM, MIPS
    CE2.0
        SH3, MIPS

    Take a look at http://www.movsoftware.com/expatxml.htm for more information.

    3.9 Is GCC available for the Windows CE platform?

    Take a look at http://www.innonet.at/~wisi/index.html. There is a GCC MIPS compiler currently under development, although it still is not ready for release.  From the page:

    I am trying to finish a port of GCC to WinCE which I found on the page  http://hyperion.clc.cc.il.us/~arty/. The work there was stopped on September 98 and actually I can't find the page any more.  This guy has already done the most work. I tried just to fix some problems.

    At the moment the compiler is still in a pre-alpha state. Simple demo programs are working on my VELO500(e.g.: opening a Message Box).

    4. Windows CE Overview

    4.1 How many processes can Windows CE support?

    Windows CE maps the bottom section of memory into 33, 32Mb slices referred to as 'slots'. The lowest slot is used for the currently running process (the process is mapped into slot 0, not copied!), and other low slots are used for system processes as follows (this is how it appears on my casio e-100):

    Slot 0: current running process
    Slot 1: NK.EXE (kernel)
    Slot 2: Filesys.exe (file system - object store, registry, ceDB etc)
    Slot 3: Device.exe (device manager)
    Slot 4: Shell32.exe (Windows CE shell)

    5 slots are used, leaving 28 remaining slots for user processes.

    4.2 How many threads can Windows CE run?

    While theoretically there are no limits to the number of threads per process, you will eventually run out of memory and virtual address space. Windows CE 2.x has eight priority levels (default is 3). Foreground threads retain the same priority as all other threads at their level.

    Threads in Windows CE are referred to as follows:

    • Time Critical (runs until complete)
    • Highest
    • Above Normal
    • Below Normal
    • Lowest
    • Above Idle
    • Idle

    One of the new features in Windows CE 3.0 will be support for 256 priority levels.

    4.3 What does the basic Windows CE memory map look like?

    The Windows CE address space is 4GB. The bottom 2Gb are used for processes and application shared space. The operating system uses the top 2Gb - hardware, object store and ROM are mapped here (Note that some locations may be different on your device). Have any additional info - please send it to me and I'll add it to the list.

    FFFF FFFF: top of memory
    BF00 0000: Beginning of ROM area
    AB00 0000: I/O Registers on a MIPS R4xxx
    AA00 0000: Beginning of screen memory
    A000 0000: Beginning of DRAM area
    8000 0000: Beginning of kernel memory space
    [.]
    4200 0000: begin shared app memory (memory mapped files)
    4000 0000: slot 32 space
    [...]
    0400 0000: slot 2 - filesys.exe
    0200 0000: slot 1 - nk.exe
    0000 0000: slot 0 - current process space

    4.4 What is Execute-In-Place (XIP) and what does it mean for me?

    Execute In Place is the ability for Windows CE to run applications (or operating system code) right in ROM. There is no need to copy the executable from ROM to RAM and run it - that would just waste time and memory.

    As an application developer you should keep this in mind - who knows, Casio or HP might buy your application and, burn it into their next device, and sell it to the masses! So, don't write back to your executable or do anything else that would prevent your application from being ROM'd.

    4.5 I want to make my own shell. Where should I start?

    Try to beg, borrow or steal the Platform Builder v. 2.12. There is source for a simple Windows CE shell on CD 1. This code is an excellent starting point. Your shell will need to handle the battery monitor, resource checking and WM_HIBERNATE message generation.

    BSquare has introduced a new development tool, Interface Composer, which allows the developer to create his own shell.  While I believe this product targets the embedded developer looking to implement a cool shell, it can also be used by the developer to create new, custom shells and skins for distribution to OEM device users.

    4.6 Can I trash my object store by turning off the power during a file operation?

    The Windows CE development team worked very hard to prevent this. The object store is based on a transactional model, complete with a transaction log tracking the most recent object store operations. If any catastrophe occurs, Windows CE can roll back the log to the last good point. In the case of an interruption during database or file delete, Windows CE can actually roll forward, continuing the operation.

    See Inside Windows CE, chapter 4, for a good look at the design philosophy behind the object store.

    4.7 How much stack space can I use per thread?

    In Windows CE 2.0 the limit was 58K per thread. This was changed in 2.1 to be up to 1Mb (that's a big stack!) per thread. 2.1 also allows setting the stack size at compile time, but all threads in your application will have the same stack size.

    4.8 Why does my Windows CE 2.0 stack blow out, even if I allocated it at compile time?

    Unlike the desktop, Windows CE 2.0 only allocates application stack space as it is needed. This can cause problems if memory is nearly full and you are allocating on the stack. This was changed in CE 2.1.

    4.9 What kind of limitations will I encounter using the CE Database?

    Windows CE 2.11 and earlier are limited to 4 indexes. Wince 3.0 is increasing the limit to 8.

    I assume you could technically have up to 2^32 records, since records are identified by CEOIDs, and since CEOID's are currently DWORDS. I did see a post online showing that the limit was around 16K records, but I have not verified this. 

    However, if you are going to be dealing with more than 1500 records do not use the CE database system - it is really slow.

    5. General Windows CE Development

    5.1 I can't find an API that I need. What should I do?

    When writing Windows CE applications, try to keep in mind the Win CE development team philosophy.  They took a look at the entire Win32 API and included only API's they felt they needed - for example, they would leave out an API if the same thing could be accomplished using three other existing API's.  In other words, if you find that an API is missing, first look around and say to yourself "how could I accomplish the same thing using other API's", since for the most part the Win CE team left out an API if they thought it could be implemented in another way.

    Another thing to do is dumpbin /all coredll.lib in your sdk lib directory. There are plenty of API functions (over 2400 on the 2.11 pspc) and one may be just what you need. If you have Platform Builder you have access to the prototypes as well. For example, I just found SetWindowsHookEx, which appears to be similar to the desktop SetWindowsHookEx. The documentation says that SetWindowsHookEx is unavailable, but there it is in coredll.lib.

    Also, if you want an API for the HPC 2.00 that isn't documented until 2.11, check the 2.00 coredll.lib anyway. It may be in there. Of course, there may be a reason it is undocumented (ie. it does not work!) so, again, use undocumented functions with care and test, test, test.

    And finally, if the API is undocumented it may not be there in future versions. Rumor has it that Microsoft is making big changes to 3.0, and even if they are making little changes, you might get left out.

    5.2 How can I insure only one instance of my application?

    There are a few methods - the registry, FindWindow(), and CreateMutex().

    You can store a value in the registry when your application starts, and remove it when your application terminates.  Unfortunately, if your application crashes is abnormally terminates, your registry value will not be removed.  When you go to run the first instance of your application again, it will see the registry entry and stop running. 

    The FindWindow() method is the easiest to implement. In your InitInstance search for another instance of your application name, ie.

    HWND hWnd=FindWindow(YOUR_WINDOW_CLASS, YOUR_WINDOW_TITLE);
    if(NULL!=hWnd) {

    SetForegroundWindow(hWnd);
    return 0;

    }

    Here's some sample VB code you can use to find a window.  This sample assumes the window title is SampleForm.

    Public Declare Function FindWindow Lib "Coredll" Alias "FindWindowW" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Public Declare Function GetLastError Lib "Coredll" () As Long

    On Error Resume Next
    Dim hWndX As Long

    hWndX = FindWindow("Form1", "SampleForm")
    If (hWndX <> 0) Then MsgBox "found it!"    '

    If you are a VBCE user, you may want to consider creating a c++ launcher that checks for a previous instance of your application and changes focus to it if found.  You can then launch the vb application if it is not running.  As a side benefit, you can also create an icon to go with your vb application.   

    Another technique is to use CreateMutex(). You first need to attempt to create a mutex and make sure it does not already exist. If the mutex does exist, you would post a registered message to all the top level windows to tell the application to move itself to the foreground, then close the current instance.

    HANDLE hMutex=CreateMutex(NULL, TRUE, _T("YOUR_MUTEX_NAME_HERE"));

    if(hMutex && ERROR_ALREADY_EXISTS==GetLastError()) {

    // The app is already running
    CloseHandle(hMutex);
    return 0;

    }

    5.3 How can I make I application startup on system startup?

    KEY_LOCAL_MACHINE\Init contains executables to run during device startup. Executables are listed under LaunchXX keys, where XX determines the run order to use. Another key, DependXX, allows specifying dependencies (ie. Launch50 can't run unless Launch40 was successful).

    Create a new key under HKEY_LOCAL_MACHINE\Init named Launch60 (or anything greater than Launch50) , and supply the executable name to run. If you want the exe to launch only if the shell successfully started, create Depend60 and set the value to 32h (hex for 50).

    An easier way to start an application on system startup is to put a link to your application in the \Windows\StartUp folder.

    5.4 How can I prevent other applications from running while my application is active (how can I keep users from accessing the Start Menu)?

    One technique is to disable the taskbar. Using FindWindow, get the handle to the taskbar window and disable it. When your program exits, make sure you enable it though! Also, a disabled taskbar makes it difficult to use the SIP. You may have to manually show/hide the SIP to work around this problem.

    Here's an example:

    HWND hTaskBarWnd = ::FindWindow(_T("HHTaskBar"), NULL);

    if (hTaskBarWnd) {

    ::EnableWindow(hTaskBarWnd, FALSE);
    ::ShowWindow(hTaskBarWnd, SW_HIDE);

    }

    Note that this approach may cause the desktop to not redraw properly. If this is a problem, grab the desktop window and manually resize that as well, as follows:

    HWND hDesktopWnd = ::FindWindow(_T("DesktopExplorerWindow"), NULL);

    If (hDesktopWnd)

    ::SetWindowPos(hDesktopWnd, NULL, 0, 0, GetSystemMetrics(SM_CYSCREEN), GetSystemMetrics(SM_CYSCREEN) - 26, SWP_NOACTIVATE | SWP_NOZORDER | SWP_NOMOVE);

    Note that 26 is the task bar height. I suppose this could change so it may be a good idea to compute the taskbar height prior to resizing the desktop window.

    5.5 How can I change task bar settings such as Auto Hide?

    AutoHide and other task bar settings are contained in the registry key HKEY_LOCAL_MACHINE\Software\Microsoft\Shell in a value called TBOpts. TBOpts is a DWORD bitfield containing four entries:

    #define MENUOPT_SHOWTIME 0x0001
    #define MENUOPT_SHOWDATE 0x0002
    #define MENUOPT_SHOWBANNER 0x0004
    #define MENUOPT_AUTOHIDE 0x0008

    Once you change the TBOpts value to show or hide various task bar settings you need to notify the task bar. The following:

    SendMessage(hTaskBarWnd, WM_COMMAND, 0x3EA, 0)

    Will notify the taskbar that changes were made and cause it to update accordingly.

    5.6 How do I keep my device from auto-suspending?

    One way to keep your device from auto-suspending is to issue a keyboard event every n minutes, such as:

    keybd_event(VK_F24, 0, KEYEVENTF_KEYUP | KEYEVENTF_SILENT, 0);

    If you are using VBCE, try the following:

    Public Declare Sub keybd_event Lib "coredll.dll" (ByVal bVK As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

    In the timer control event, type (7B is VK_F12 - you could use any character you like):

    keybd_event &H7B, 0, 0, 0
    keybd_event &H7B, 0, &H2, 0

    Another suggestion is to open a socket and keep it open as long as you want the system to stay awake.

    Finally, you can use SystemParametersInfo to set the timeout to 0, disabling it. For example,

    SystemParametersInfo(SPI_SETBATTERYIDLETIMEOUT, 0, NULL, TRUE);

    The problem I see with this approach is that if your application crashes or somehow manages to exit without putting it back to its previous value, the device will no longer timeout when idle. Even soft resetting the device would not fix the problem, so use this approach with care. When using this approach, the power settings in the control panel show the default settings, but the timeout never occurs.

    There is also an undocumented API SetPowerOffHandler, but I have had no luck getting it to work. I can make the device start doing weird power related things, but not exactly what you would want to ship!

    5.7 How do I detect power-on?

    You can detect power on using WaitCommEvent and the EV_POWER mask. Open a serial port and wait for an EV_POWER event. When the event occurs send your application window a message letting it know that the power was turned back on.

    SetCommMask(comportHandle, EV_POWER);
    WaitCommEvent(comportHandle, &eventValue, NULL);
    SendMessage(hwnd, WM_POWERON, 0, 0);

    One caveat - opening the serial port turns on the serial hardware, which takes additional battery power. I don't have any hard numbers on the effect this technique has on battery life (yet).  Another caveat - this may interfere with other applications use of the serial port. Test carefully after implementing this power-on detection technique.

    Another way to detect power on was discussed in the Windows CE Tech Journal, September 1999 issue. In the article, Jeff Spurgat described how device drivers receive power state change notifications, and how application developers can latch on to this functionality to receive power on notifications.

    Basically, device drivers receive a powerup and powerdown message. Typically, a device driver will power up or power down their hardware based on this notification and return as quickly as possible without calling the kernel or any function that can cause a paging operation. In the article, Jeff simply sets a few global variables when the power state changes. He has a worker thread monitor the state of these variables once per second, and do a PostMessage if the poweron flag is true. Jeff provides sample code as well - both a working power detection driver and a sample application that works with the driver. You can download it here.

    Finally, another interesting suggestion is to create an application thread with that fires a timer once every n seconds. Every time the timer fires, compare the current system time (GetSystemTime) with the last (saved) system time value. If the difference exceeds the timer interval the device has been suspended during the interval.

    5.8 How can I programmatically turn off the device?

    Windows CE treats the power button just like a keyboard key. Because of this, you can simply send a VK_OFF keystroke to the system and it will power off, just like you pressed the off button!

    void SuspendDevice()
    {

    keybd_event(VK_OFF, 0, 0, 0); // down
    keybd_event(VK_OFF, 0, 2, 0); // up

    // code execution resumes on the next line...
    MySampleFunction(); // runs when the device wakes back up...

    }

    By the way, VK_OFF is defined as 0xDF.

    You can also use the PowerOffSystem function. This function is undocumented, so it may change or disappear at any time.

    The undocumented function void PowerOffSystem(void) is declared in coredll.dll. It places the CE device in suspend state. However, when power is restored the user password dialog is not shown and the desktop and other windows are not redrawn. Code execution continues at the next line after the PowerOffSystem call.

    You can invalidate all windows to get around the redraw problem, and you can also detect the 'prompt for password' state, and if required, display your own password dialog, and use CheckPassword to check the entered password against the user's password.

    GwesPowerOff is another power API.  The GWES calls GwesPowerOff when suspending the device.  This may be a better approach than calling PowerOffSystem directly.   Check out http://support.microsoft.com/support/kb/articles/Q207/9/88.ASP for more information. [Thanks to Mike Burch for this tip].

    Finally, see Suspending Your Device Programatically for an article and code samples discussing power off APIs.

    5.9 How can I get battery status?

    Use the GetSystemPowerStatusEx API, available under WCE 2.0 and greater.

    5.10 How can I determine the device type?

    Use SystemParametersInfo. There is an option SPI_GETPLATFORMTYPE which returns a string containing the platform.

    BTW, HPC Pro devices return 'Jupiter'.

    5.11 How can I determine the device name?

    Note: This key may not be valid on all platforms. Check your platform

    Check the registry key HKEY_LOCAL_MACHINE\Platform for a value named 'Name'. The value corresponds to the OEM specified device name. For example, on the casio e-100 it is Casio Jx530 CE2.11. One the Nino 312 it is Philips Version 1.

    5.12 How can I initiate a connection to the desktop?

    Do a CreateProcess or ShellExecuteEx using \windows\repllog.exe. ReplLog will start an activesync session with the desktop.

    5.13 How can I tell if ActiveSync is currently running?

    One hack is to do a FindWindow looking for repllog. If you find it, activesync is either running or attempting to connect.

    5.14 How can I programmatically change the display brightness?

    There is no standard API to change brightness (that I know of). Each OEM implements brightness controls in their own way. If you are interested in modifying brightness check with the OEM or if you can, inspect the OEM display driver.

    5.15 How do I reboot/reset the device?

    OEM's can optionally handle the IOCTL_HAL_REBOOT in OEMIoControl. However, applications cannot call OEMIoControl directly, but they can call KernelIoControl, which in turn calls OEMIoControl.

    #include "winioctl.h"

    BOOL KernelIoControl(DWORD dwIoControlCode, LPVOID lpInBuf, DWORD nInBufSize, LPVOID lpOutBuf, DWORD nOutBufSize, LPDWORD lpBytesReturned);
    #define IOCTL_HAL_GET_DEVICE_INFO CTL_CODE(FILE_DEVICE_HAL, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
    #define IOCTL_HAL_REBOOT CTL_CODE(FILE_DEVICE_HAL, 15, METHOD_BUFFERED, FILE_ANY_ACCESS)

    KernelIoControl(IOCTL_HAL_REBOOT, &inVal, 4, outBuf, 1024, &bytesReturned);

    If implemented by the OEM this function would perform a soft reset of the device. If you want to perform a hard reset, first call SetCleanRebootFlag.

    Note that this did not work on the Casio E-100. Also, future versions of CE will implement SetCleanRebootFlag as a restricted function.

    5.16 How can I change the size of the object store?

    Note: these functions are documented only in Platform Builder, and are likely to be restricted in future versions of Windows CE.

    The functions GetSystemMemoryDivision and SetSystemMemoryDivision allow you to change the relationship between memory and the object store.

    The prototypes are:

    BOOL GetSystemMemoryDivision(LPDWORD storePages, LPDWORD ramPages, LPDWORD pageSize);

    DWORD SetSystemMemoryDivision(DWORD storePages);

    The function returns SYSMEM_CHANGED if executed successfully.
    The function returns SYSMEM_FAILED if storePages is out of range.
    If SYSMEM_FAILED is returned, you can get further information by calling GetLastError.
    If a reboot is necessary for the change to take effect, the function returns SYSMEM_MUSTREBOOT.
    If a previous call returned SYSMEM_MUSTREBOOT, the function returns SYSMEM_REBOOTPENDING. In this situation, the boundary cannot be adjusted further until the reboot occurs.

    You cannot shrink system memory or the object store memory beyond 256K each, including space for existing files and records.

    5.17 How can I reprogram the buttons on the device? Can I use hardware buttons to initiate application functionality?

    Check out the following API's:

    RegisterHotkey
    UnregisterHotkey
    UnregisterFunc1 (undocumented)

    Also, check out http://www.conduits.com/ce/dev/wince.htm and take a look at the keytest example - it contains code to actually do this.

    5.18 I am writing a dialog based application. Why doesn't an entry appear in the taskbar or in the task list?

    The taskbar only contains buttons for visible, top-level windows that have the WS_OVERLAPPED style. By default, dialog boxes have the WS_POPUP style and thus do not get taskbar buttons. The workaround is to change your dialog box style in the resource editor from WS_POPUP to WS_OVERLAPPED.

    There was an interesting report from someone using PB 2.12. They did not want a taskbar button, and did not use WS_OVERLAPPED, but the taskbar button still appeared! Perhaps the default dialog/taskbar behavior has been changed in 2.12.

    5.19 I want to modify the contact database. What is the contact database name or CEOID?

    You should not attempt to modify the contact database directly, but instead use the API set supplied by Windows CE.

    Check out OpenAddressBook, CreateAddressBook, CloseAddressBook, as well as AddressCard, GetAddressCardProperties, ModifyAddressCard, etc.

    You may also want to check out the Pocket Outlook Object Model SDK, aka POOM SDK. POOM offers a simple interface into the contact, calendar and task database. You can download the POOM SDK at msdn.microsoft.com/cetools/platform/poomsdk.asp.

    5.20 What is Venus?

    Venus is produced by Chinese television manufacturer TCL. The Venus computer comes with a 56kb modem and a television interface, and runs the Windows CE OS. Venus provides easy internet access through the user's television. TCL plans to start selling Venus in October, and hopes to sell 300,000 units by the end of the first year.

    5.21 What is Cedar?

    Cedar is the codename for Windows CE 3.0. It should be release sometime around 2Q 2000. Cedar will contain lots of cool stuff, including more DirectX support, MSMQ, CEF.

    5.22 When is MSMQ going to be available?

    It will be released as part of Windows CE 3.0. MSMQ is ideal for wireless communications - think of it as transaction based messaging. If some of you information gets lost or mangled on the way to the server you can rollback to the beginning of the transaction.

    Rumor has it you should expect Windows CE 3.0 out around 2Q 2000, so I guess you can expect MSMQ around the same time.

    5.23 How do I get the time under CE - or, what happened to time()?

    Use SYSTEMTIME and GetLocalTime instead, ie.

    SYSTEMTIME st;
    ::GetLocalTime(&st);

    5.24 How can I convert a pwi to an rtf?

    For VCCE there is a document on MSDN named "Converting Rich Ink Data" that provides code for converting between .pwi and .rtf.

    5.25 How can I determine whether the device has been rebooted/reset since the last time the application ran?

    Check the registry key HKEY_LOCAL_MACHINE\Comm for the value BootCount. This value is incremented every time the device is soft-reset. If the device is hard reset the value is set back to one.

    I received a report that this key isn't found on an HP620LX.  Perhaps it was not implemented in the HPC 2.0 OS.

    5.26 How can I make a resource only DLL under Windows CE?

    You need to define the entry point to the DLL. Just declare DllMain and have it return TRUE.

    #if defined(UNDER_CE) && !defined(_WIN32_WCE_EMULATION)
    #include <windows.h>
    extern "C"
    BOOL WINAPI DllMain (
    HANDLE /*hInstance*/, // @parm handle of instance
    DWORD /*dwReason*/, // @parm reason
    LPVOID /*lpReserved*/ // @parm reserved
    )
    {
    return TRUE; // ok
    }
    #endif

    5.27 How can I determine the current SIP state?

    GetSIPInfo allows you to determine the current SIP show state. Unfortunately, GetSIPInfo requires a UDT which is not available in VBCE 6.0. If you need to get the SIP show state from VBCE 6.0, get the vbceSoftKey control from www.cegadgets.com.

    5.28 How can I change the current SIP state?

    You can control the state of the SIP either using SipShowIM or by filling out the SIPINFO structure and using SetSIPInfo.

    SipShowIM is handy because it can be used from VBCE 6.0. The prototype for SipShowIM is BOOL SipShowIM( DWORD dwFlags ), where dwFlags is either of the following:

    #define SIPF_OFF 0x00000000
    #define SIPF_ON  0x00000001

    If you need to retrieve the current SIP display state from VBCE 6.0, get the vbceSoftKey control from www.cegadgets.com.  It is a good idea to query the current SIP state prior to showing it - you don't need to show it if its already up, and you do not want to hide it later if the user has chosen to show it.

    SetSIPInfo is more robust - you can also determine the current show, hide state of the SIP, get the SIP rectangle size or the visible rectangle size.  Unfortunately, it is only availble from vcce (until the vbceSoftKey control is updated).

    Another approach to showing and hiding the SIP involves finding the SIP window and manually showing or hiding it.  Note that this approach does not rely on aygshell.lib, which is nice if you want the same code to run on an hpc and pspc device.

    // created by Dennis Berditchevsky
    void UL_RaiseSIP(BOOL bRaise)
    {
         // Find window class: "SipWndClass"
         CWnd *pWndKeyb ;
         if( pWndKeyb = CWnd::FindWindow(_T("SipWndClass"),NULL) ) {
              if( bRaise ) {
                   if( !pWndKeyb->IsWindowVisible() ) {
                        pWndKeyb->ShowWindow(SW_SHOW);
                        bSipUp_Glob = TRUE; // show it. And not manually.
                   }
              } else {
                   if( bSipUp_Glob ) {
                        pWndKeyb->ShowWindow(SW_HIDE);
                        bSipUp_Glob = FALSE;
                   }
              } //endif(bRaise)
         } //endif(pWndKeyb)
    }

    5.29 How can I enable or disable the Jot SIP?

    You can enable/disable jot via the registry.

    There is a registry entry under the Jot registry CLSID key called IsSIPInputMethod. Set this to 0 to hide the method, set it to 1 to show it. Apparently the SIP list displayer checks the registry entries every time it displays the list of available SIP because once you change the registry, the change automatically appears in the list.

    The keyname is: HKEY_CLASSES_ROOT\CLSID\{6f311f80-4b14-11d1-ab08-006097490b17}\IsSIPInputMethod.

    This method works with other SIPs as well. Just find the CLSID for the SIP you are interested in, change the IsSIPInputMethod to 0, and it will be disabled.

    5.30 I need an ownerdrawn listbox but they are unsupported. What should I do?

    Ownerdrawn listboxes are not supported under Windows CE. However, use can use a listview control to accomplish the same thing. The listview control can be ownerdrawn, can be set to checkbox style, and has a variety of display modes.

    If you are using MFC, create a CListCtrl (either on a dialog via the resource editor or manually using create). Make sure you specify the LVS_OWNERDRAWFIXED style, then handle the DrawItem method. Check out CListCtrl for more information.

    Also, if you want to add additional listview functionality, see ListView_SetExtendedListViewStyle. You can see styles like LVS_EX_FULLROWSELECT, which cause the entire row to be highlighted when selected, or LVS_EX_CHECKBOXES, which activates checkboxes on each line of the list view.

    5.31 How can I implement a list view with a checkbox next to each item?

    Create the listview control normally, then specify:

    ListView_SetExtendedListViewStyle(hWnd, LVS_EX_CHECKBOXES);

    This causes checkboxes to be displayed in the list control. To set and clear the checkboxes, use:

    LVITEM lvi;
    lvi.stateMask = LVIS_STATEIMAGEMASK;
    lvi.state = UINT((int(isChecked) + 1) << 12);
    ::SendMessage(m_hWnd, LVM_SETITEMSTATE, nItem, (LPARAM)&lvi);

    or if you are using MFC, use:

    m_listCtrl.SetItemState(index, UINT((int(isChecked) + 1) << 12), LVIS_STATEIMAGEMASK);

    5.32 What is POOM and should I use it?

    POOM stands for Pocket Outlook Object Model, and represents a standard, easy to use interface into Contacts, Calendar and Tasks on your Windows CE device. Use this in place of modifying the contact, calendar or task databases directly, or even the AddressCard API.

    You can download the POOM SDK at msdn.microsoft.com/cetools/platform/poomsdk.asp.

    Along with offering basic access to Pocket Outlook, POOM offers some cool features like ReceiveFromInfrared and SentToInfrared, which will squirt the selected object(s) in/out the infrared port. It also allows you to work with cities on the device.

    5.33 How can I programmatically launch a dial-up connection (without using the RAS API)?

    Launch \windows\rnaapp.exe using CreateProcess or ShellExecuteEx. For example:

    SHELLEXECUTEINFO shInfo;
    memset(&shInfo, 0, sizeof(SHELLEXECUTEINFO));
    shInfo.cbSize = sizeof(SHELLEXECUTEINFO);
    shInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
    shInfo.lpFile = _T("rnaapp.exe");
    shInfo.lpParameters = _T("-e\"work\" -m");
    shInfo.lpDirectory = _T("\\windows");
    ShellExecuteEx(&shInfo);

    This will start the dial-up connection named work. If you need more control over the connection, use the RAS API.

    5.34 How can I write or read a physical memory location?

    Use VirtualAlloc and VirtualCopy to read or write to physical memory. VirtualAlloc is documented in the CE SDK help, and VirtualCopy is documented in the Platform Builder docs. The prototype for VirtualCopy is BOOL VirtualCopy ( LPVOID lpvDest, LPVOID lpvSrc, DWORD cbSize, DWORD fdwProtect ). VirtualCopy is defined in coredll.dll.

    For example:

    // PHYSADDR is the physical address of the peripheral registers
    #define PHYSADDR ((PVOID)0x10000000)

    #define SIZE (4800*4)
    LPVOID lpv;
    BOOL bRet;
    lpv = VirtualAlloc(0, SIZE, MEM_RESERVE, PAGE_NOACCESS);
    bRet = VirtualCopy(lpv, PHYSADDR, SIZE, PAGE_READWRITE | PAGE_NOCACHE);

    // At this point lpv is a virtual address which maps the memory at PHYSADDR for SIZE bytes

    I have had difficulty using this for access to other process slots - one suggestion was to use SetProcPermissions(0xFFFF) but I did not notice a difference. It may be that SetProcPermissions allow you to access other process slots using regular pointers, as opposed to VirtualAlloc/VirtualCopy.

    There are a few quirks with VirtualCopy (ie. shifting bits of address, being on a page boundary). Check the docs for more information.

    You could also investigate ReadProcessMemory/WriteProcessMemory.

    Note that VirtualCopy, SetProcPermissions, ReadProcessMemory/WriteProcessMemory may  become restricted in future CE versions.

    5.35 How can I enumerate Windows CE databases from the desktop?

    Enumerating your windows ce device databases from the desktop is fairly straightforward.  Simply initialize the rapi interface, grab a handle to the first database and call CeFindNextDatabase until it returns zero.  Use CeOidGetInfo to retrieve information about the currently selected database. Don't forget to include rapi.h and make sure to link rapi.lib into your project.

    Here's an example:

    CString message;
    CString workString;

    m_listboxCtrl.ResetContent();

    HANDLE dbHandle = CeFindFirstDatabase(0);    // find all db's
    CEOID curDB;
    CEOIDINFO ceInfo;
    while (curDB = CeFindNextDatabase(dbHandle)) {

      ceInfo.wObjType = OBJTYPE_DATABASE;
      CeOidGetInfo(curDB, &ceInfo);
      workString = ceInfo.infDatabase.szDbaseName;

      message.Format("%s\t%i", workString, ceInfo.infDatabase.wNumRecords);
      m_listboxCtrl.AddString(message);

    }

    There is also an MFC example, wcedbtst, that covers much of the CEDatabase functionality, including reading/writing database records, so I didn't bother covering that here.  The CE RAPI functions I used above are available as part of the Win32 API.

    And for more documentation, take a look at the source files shipped with MFC, even if you aren't using MFC .  There is quite a bit of code showing how to implement Win32 API functions, since that is how MFC is built.

    5.36 I need to use IrDA to communicate with other devices. Where should I start?

    Check out the IrDA article at: http://www.microsoft.com/mind/0599/wince/wince.htm. It gives a detailed explanation if IrDA and some interesting things you can do with it.

    5.37 How can I show the wait cursor, especially from VBCE?

    If you are using VBCE and want to show a waitcursor, try this code I found in the microsoft.public.vbce newsgroup, posted by Piet De Booser:

    Following code works on a PPC but only on the device not in emulation.

    Declare Function LoadCursor Lib "coredll.dll" Alias "LoadCursorW" (ByVal
    hInstance As Long, ByVal lpCursorName As Long) As Long
    Declare Function SetCursor Lib "coredll.dll" (ByVal hCursor As Long) As Long
    Const IDC_WAIT = 32514

    Function WaitCursor(bOnOrOff As Boolean) As Long

        If bOnOrOff = True Then
            hCursor = LoadCursor(0, IDC_WAIT)
        Else
            hCursor = LoadCursor(0, 0)
        End If
        WaitCursor = SetCursor(hCursor)
    End Function

    If you are using VCCE you can using the MFC CWaitCursor class, which works nicely, or just the straight SDK function:

    SetCursor(SetCursor(LoadCursor(NULL, IDC_WAIT)); // set wait cursor
    SetCursor(NULL); // remove wait cursor

    You do not need to call DestroyCursor on the wait cursor. It is a shared cursor, and DestroyCursor is only used on cursors created with CreateCursor.

    5.38 How can I print from a Windows CE application?

    This code was posted online by Tim Fields of Field Software. Fieldsoftware produces an ActiveX print control. See www.fieldsoftware.com for more information. Note: I have not had a chance to try this code.

    PAGESETUPDLG pgs;
    memset((void*) &pgs,0,sizeof(PAGESETUPDLG));
    pgs.lStructSize = sizeof(PAGESETUPDLG);

    // pop up page setup dialog box
    int rval=PageSetupDlg(&pgs); //fills pgs structure with current settings
    if (rval==0) {
         // handle error..
    }

    // You can now get margin setting values from pgs structure

    LPDEVNAMES lpDev;
    lpDev=(LPDEVNAMES) GlobalLock(pgs.hDevNames);
    BYTE *tbyte(BYTE *) lpDev;
    TCHAR *pDeviceName, *pPort, *pDriverName;
    pDriverName=(TCHAR*)(tbyte + lpDev->wDriverOffset);
    pDeviceName=(TCHAR*)(tbyte + lpDev->wDeviceOffset);
    pPort=(TCHAR*)(tbyte + lpDev->wOutputOffset);

    // Get the printer DC!! This may pop up an additional printer dialog box
    HDC hdc;
    hdc=CreateDC(pDriverName,pDeviceName,pPort,NULL);
    GlobalUnlock(pgs.hDevNames);

    if (hdc==NULL) {
    // handle error
    }

    // You now have your HDC...

    // Lets get some values from the page dialog box
    LPDEVMODE lpDevMode;
    lpDevMode=(LPDEVMODE) GlobalLock(pgs.hDevMode);
    if (lpDevMode==NULL) {
    // handle error
    }

    // Get whatever DEVMODE info needed (orientation, paper size, etc)
    CurOrientation=(lpDevMode->dmOrientation==DMORIENT_PORTRAIT);
    CurIsColor=(lpDevMode->dmColor==DMCOLOR_COLOR);
    CurPaperSize = lpDevMode->dmPaperSize;
    CurHighPrintQuality = (lpDevMode->dmPrintQuality==DMRES_HIGH);

    GlobalUnlock(pgs.hDevMode);

    5.39 How do I register a control under Windows CE?

    The easy way to register a control is to use regsvr2.exe, a GUI based registration tool. 

    If you want to use regsvrce.exe, do the following:

    Copy your control into the \windows directory on your device, run regsvrce passing the path and filename of the control as an argument.

    For example, to register vbceSoftKeyboard.dll on a Palm Sized PC, you would do the following:

    • type run23 using the keyboard SIP. This will bring up the Run dialog (note- you may have to type run23 a couple of times before it comes up). Sometimes it helps to make the keyboard show, click on the taskbar, then type 'run23'.
    • Type 'regsvrce \windows\vbceSoftKeyboard.dll' and press OK.  Your control is now registered!

    You may have to copy regsvrce.exe from your sdk 'target\mips' (or whichever processor you use) directory. 

    5.40 I am having problems getting CE RAPI to work properly. What can I check?

    Here's a few basic things you can check:

    1. Are you sure RAPI is initialized properly?
    2. Try to do a simple command, like cecopyfile, to make sure you've got communications working in your app.
    3. Are you converting your strings to unicode?
    4. Do you have vcce 5.0? under samples\win32 there is ceinvoke - both a client and server demo, that shows how to do this in block and stream mode.
    5. Are you converting your strings to unicode? I mention this twice because it appears to be the leading cause of RAPI problems.  See the RAPI example mentioned below for an example of how to use UNICODE strings.

    Finally, check Using CE RAPI to Communicate with Windows CE from the Desktop for more information and a few examples.

    5.41 I want to create a mail message then send it. Can I do this using the Mail API?

    The Windows CE Mail API allows you to add, modify and delete mail messages and mail folder names.  Using the Mail API you can enumerate all messages in any mail folder, change the recipient, subject, body or attachments, and update the entry in the mail store.

    The Mail API does not allow for sending or receiving mail at this time. The documentation says that the Inbox acts as a mediator, which means that you can manipulate messages, but it is up to the Inbox application itself to send and retrieve mail.

    While I have not tried this, one thing I can suggest is to look at the mail transport functionality. Check out the svcsampl example in  the HPC Pro SDK. It shows (in code) how a simple mail transport service is implemented.  You can also check the SDK documentation for functions like TransportInit, TransportConnect and TransportSend. It appears that pmail loads smtp.dll (the transport service dll) and calls these functions, using TransportSend to send one message at a time.

    5.42 How can I display GIF, JPG, BMP, or XBM images in my application?

    The easiest way to display images from your (VC) application is by using imgdecmp.dll. Unsupported Software has an article discussing imgdecmp along with some sample source code.

    5.43 Why can't I display 16-bit images from my application using imgdecmp.dll?

    Well, it turns out that it can!

    Many people have difficulty getting 16-bit jpg images to display properly.  Apparently, the trick is to specify dii.iBitDepth = 24.  Imgdecmp.dll does not like 16 as the value.  The S309 control uses imgdecmp.dll and manages to produce 16 bit color images.

    It does appear that SHLoadDIBitmap will display 16bit .bmp images. I believe this is what the shell (hence the SH once the front of the API) uses to load the desktop image.

    5.44 What steps can I take to make my software ready for foreign markets?

    First, take a look at the internationalization session video from the Windows CE DevCon 99, http://events.microsoft.com/isapi/events/pages.asp?s=63814&p=622. There are a lot of great tips on how to make your applications ready for foreign markets. Some of the suggestions include:

    • Place your strings, images, etc in a resource file and make this resource file a .dll. When you want to build an application for another market you will only need to include the new dll and will not have to recompile your application. 
    • Remember that English is a very compact language. Other language strings average 35% longer, with some string more than 2 to 3 times as long.
    • Not all currency symbols are one character (ie. KR for Swedish Krona)
    • Try to avoid culturally specific images. Images acceptable in your country may be embarassing/insulting in another culture.
    • Consider writing all of your strings in Pig-Latin. Pig-Latin is longer than English, so you will encounter string length issues sooner rather than later (and we all know the sooner you find a problem the easier/cheaper it is to fix).

    Also, take a look at the NLS API set. It is easy to use and offers functions like GetDateFormat, GetTimeFormat, GetNumberFormat and GetCurrencyFormat.

    Finally, if you are a Visual Basic developer you will notice that many of the NLS API functions use UDTs, which are not supported under VBCE 6.0. Take a look at vbceNLS, available on this site for free. vbceNLS allows the VBCE developer to access several NLS functions.

    5.45 How can I open, change and delete mail messages?

    Windows CE supplies a mail API that allows the Visual C++ developer to add, change and delete mail messages. If you want to work with the inbox under Windows CE you will need to use this API, since at this time POOM does not work with email.

    Below is some sample code - it walks through the inbox mail messages and renames the subject line for any that start with 123, and delete the rest:

    CString workString;
    HANDLE hMail;
    MailMsg curMsg;

    if (MailOpen(&hMail, FALSE)) {

    memset(&curMsg, 0, sizeof(MailMsg));
    curMsg.dwFlags = MAIL_FOLDER_INBOX | MAIL_GET_BODY | MAIL_FULL;

    BOOL status = MailFirst(hMail, &curMsg);
    while (status) {

    workString = MailGetField(&curMsg, _T("Subject"), FALSE);
    if (workString.Left(3) == "123") {

    workString = workString.Mid(4);
    MailSetField(&curMsg, _T("Subject"), workString);
    MailUpdate(hMail, &curMsg, TRUE);

       } else

    MailDelete(hMail, &curMsg);

    // prepare to read next message
    MailFree(&curMsg);
    curMsg.dwFlags = MAIL_FOLDER_INBOX | MAIL_GET_BODY | MAIL_FULL;
    status = MailNext(hMail, &curMsg);

      }
      MailClose(hMail);

    Make sure to free each mail message you open, and do a MailClose when you are done with mail. 

    5.46 How can I use ATLCE to sink events?

    Take a look at Ken Rabold's article Sinking COM Events with ATL CE for information on implementing connection points via ATL CE.

    5.47 Do the Pocket Office applications support automation? Can I use them from VCCE, VBCE?

    Pocket Office does not support OLE Automation, since Windows CE only supports in-process COM objects at this time.

    5.48 I am using VBCE and need to call API functions that require structures, but UDT's are not available.  What can I do? What should I watch out for?

    Antonio Paneiro has written an article showing how you can use strings to work around the lack of UDT support in VBCE.  Basically, you can populate the string in such a way to make its memory image match the reuired structure definition.  Take a look at http://www.vbce.com/articles/udt/index.asp

    One thing to keep in mind: structure in C are often aligned to specific boundaries, for example:

    typedef struct
    {
        char c;
        short h;
        int n;
    } TheHorror;

    The internal representation of c = 0x77, h = 0x8899, n = 0xaabbccdd might be (assuming little endian): 77 00 99 88 dd cc bb aa, if aligned on 2byte boundaries or 99 00 00 00 99 88 00 00 dd cc bb aa, if aligned on 4byte
    boundaries. [thanks to Russell Harper for this tip, posted on the windowsce vbce newsgroup].

    5.49 How can I turn on the device when the serial port has activity?

    You can use CeRunAppAtEvent to cause your device to wake up and run an application based on various events, including:

    • When data synchronization finishes
    • When a PC Card device is changed
    • When an RS232 connection is made
    • When the system time is changed
    • When a full device data restore completes

    5.50 How can I start applications on device connect/disconnect?

    See registry FAQ entry 3.1 How can I start applications on device connect/disconnect?

    5.51 Do you have any tips on getting more out of HTMLView?

    I personally have suffered at the hands of this dll.  While the dll works great for simple html rendering, you quickly run into trouble when trying to use it for more complicated purposes.  For example, I once attempted to implement a book reader using the html control.  It worked very well, but basic features like setting cursor position were not implemented.  I considered programmatically placing anchors in the HTML to allow navigation but ended up writing my own simple HTML parser/renderer instead.

    Anyway, here is an excellent post from Craig Rairdin:

    Download our free demo at www.laridian.com to see what we do with the HTML control. We use it for lots of stuff. The next version handles embedded images (.bmp, .jpg, .gif), sounds, and (soon) forms. That version isn't out yet.

    Here are some code snippets from our class wrapper around htmlview.dll. You've messed with this enough to fill in any details I might accidentally leave out. You've discovered enough to catch some of the subtleties (some messages have to go to the child window, etc.) 

    Here's the Copy operation:

    // But, how to copy from the HTML window?  Experimentation has
    // shown that if there is a child window, the WM_COPY should be
    // sent to the child window.  If there is not a child window,
    // the WM_COPY should be sent to this window.
    HWND hwnd = GetWindow(m_hWnd, GW_CHILD);
    if (hwnd != NULL)
      {
      SendMessage(hwnd, WM_COMMAND, 0x000156BA, 0);
      }
    else
      {
      // On the PPC, there's no child window and this window seems
      // to accept WM_COPY
      SendMessage(m_hWnd, WM_COPY, 0, 0);
      }

    Note: Copy does goofy things if you display text then resize the window then do a copy. It drops spaces out of the output.

    Next, here's CopyAll (I don't think/remember if the getsel and setsel operations really work)

    // If there is a current selection, remember it.
    // LOWORD(selection) = start position
    // HIWORD(selection) = stop position
    DWORD selection = SendMessage(m_hWnd, EM_GETSEL, 0, 0);
    // Select and copy all contents.
    SelectAll();
    BOOL CopiedSomething = Copy();
    // Restore the prior selection.
    SendMessage(m_hWnd,
      EM_SETSEL,
      (WPARAM)(INT) LOWORD(selection),
      (LPARAM)(INT) HIWORD(selection));
    // Here's scroll up a line. Up, down, and moving by pages are similar:
    HWND hwnd = GetWindow(m_hWnd, GW_CHILD);
    if (hwnd != NULL)
      {
      SendMessage(hwnd, WM_VSCROLL, SB_LINEUP, NULL);
      }
    else
      {
      // On the PPC, there's no child window.
      SendMessage(m_hWnd, WM_VSCROLL, SB_LINEUP, NULL);
      }

    Some other things we learned is that you can't capture Alt+Tap like the docs say you can. On some platforms you even get a menu of some kind when you do Alt+Tap but you can't do anything with it.

    Handling the notification messages is pretty much just like the docs say. Like I said above, we handle hotlinks, pics, sounds and are working on forms.

    We've talked to Microsoft at length about this .dll. We've concluded that they are embarrassed about it and don't want to talk about it. They have plans to do this better in 2.12 (they've ported IE4 to that platform). You'll be able to have lots more flexibility if/when any devices ship with that version of the browser. Htmlview.dll will go away and you'll have a much more powerful dll to work with.

    5.52 How do I get the name of a ADOCE table if I only have an Table ID number?

    This helpful post comes from Sandra Walters:

    CDB files created with Pocket Access have several 'hidden' tables, among them are MSysTables and MSysFields, just like the Win32 version of Access. MSysTables includes a TableID and a TableName field in each record, which is
    how Access relates the two together.

    The readme that comes with ADOCE discusses this in detail with lists of fields in each.  I've had to write code to look up table names as well as field names and this document was very helpful.

    5.53 How can I determine the amount of free space on storage cards, on the device and in memory?

    Use GetDiskFreeSpaceEx to get information about storage card free space. For memory, check out GlobalMemoryStatus.

    5.54 How can I disable the OK button on my Windows CE dialogs?

    Try the following code in your dialog box:

    ModifyStyleEx(WS_EX_CAPTIONOKBTN,0);
    RedrawWindow();

    5.55 Which common dialogs are supported under Windows CE?

    Paul Yao (www.paulyao.com) is an author and Windows CE development instructor.  Below, Paul gives a list of supported and unsupported common dialogs.

    There are eight common dialog boxes in Win32.  The File Find is not supported on CE (and therefore the MFC wrapper, CFileFind, would also not be supported).

    Here are the eight. Y= supported on CE (at least on HPC); N= Not supported. Note that support for PsPC doesn't include File|Open, File|SaveAs - at least for version 1 of PsPC.

    Dialog
    HPC/HPC Pro
    PSPC

    File Open
    Y
    Y*

    File Save
    Y
    Y*

    Print
    Y
    Y

    Print Setup
    N
    N

    Find
    N
    N

    Replace
    N
    N

    Color Picker
    Y
    Y

    Font Picker
    N
    N

    * The PSPC platform displays a modified version of the file open and save as dialogs.  This version does not let you browse the entire file system, but restricts you to the storage card MyDocuments directory and the object store MyDocuments directory.

    6. Palm Size Development Issues

    6.1 If I don't implement an exit menu item, is there anything I can do to make closing the application easier?

    While the Windows CE Pocket applications do not have an exit item, they do close based on the Ctrl-Q keyboard accelerator. Users can close applications by issuing Ctrl-Q from the input panel. It's not a standard or anything (at least I haven't heard about it) but it's easy to do and some people will try it.

    6.2 Why should I pay any attention to WM_HIBERNATE?

    Ahhh, the neglected WM_HIBERNATE message. The Windows CE shell sends this message when it sees resources running low, and applications are supposed to free resources, memory, and everything else possible short of closing. The shell actually can close applications if things get bad enough.

    The WM_HIBERNATE message is actually part of a larger mechanism. The Windows CE shell watches resources based on a timer (the sample shell checks every 5 seconds). Every so often it will check the available resource level, and if the available memory drop below 224K it will send hibernates to all applications. If memory drops below 160K it will attempt to close background applications via WM_CLOSE. In the sample shell shipped with Platform Builder 2.12, the shell nicely sends a WM_CLOSE then waits 8 seconds. If the application still is not close it kills its process (not so nice)! Windows CE actually relies on the shell to close unused applications by sending WM_CLOSE.

    Your application should be a good Palm Size Citizen. Free up lists, close files, etc when you receive WM_HIBERNATE. If you receive a WM_CLOSE message, don't show dialogs or other messages - close silently. And definitely do close, because as mentioned above, if you are not closed in 8 seconds the shell will kill you.

    7. Common Executable Format (CEF)

    7.1 What is CEF?

    CEF stands for Common Executable Format. CEF is Microsoft's solution to the problem of multiple processor types.

    CEF provides a single target format for Windows CE executable files. The first time a CEF file is executed on a CE device, CE converts the CEF file to native code. This conversion only occurs once and happens very quickly. The resulting code is native to the processor.

    Microsoft's goal is to have the executable's performance be at least 80% of native, fully optimized code, and to be only about 20% larger than a native executable.

    7.2 Can I use CEF in my current applications?

    Get the Visual C++ Toolkit for Windows CE v. 6.01. One of the features added to this version is generation of CEF output.

    7.3 Can I have a CEF based dll or ocx?

    Yes. CEF will convert dll's and ocx's as well as exe's.

    7.4 Why should I use CEF?

    CEF's benefit is it's ability to run on any CE device, even ones that didn't exist at compile time.

    Microsoft is (currently) committed to handling CEF on each new platform that comes into existence, so if you have an application built for CEF, that application will run on all current processors as well as new processors that come into existence after the product is shipped.

    CEF greatly simplifies installation issues. Instead of producing a cab file for each platform type, produce one install set. Executables are converted on the platform once, prior to running.

    7.5 Is CEF as fast as an application compiled for the platform?

    No. Applications targeting the CEF format are not as heavily optimized as compilations targeting true native code. Microsoft engineers tried to make performance be at least 80% that of a native application.

    7.6 If I am only targeting one specific device should I use CEF?

    If you are certain that your application will only be run on one type of device (say a Casio PA2400) you should compile to produce native code for that platform. Compiling for native code produces a better optimized and smaller executable.

    8. Installation

    8.1 What install packages are available?

    Windows CE installation packages usually automate the building of cab files, and provide a desktop CEAppMgr launcher. They hide the issues surrounding building ini files, processor codes, etc from you and let you focus on generating an install set.

    Here is info on two installation toolkits:

    InstallShield CE is a commercial installation package from the same company that dominates the desktop installation world. Their product is straightforward and easy to use, and they offer excellent support. They have a dedicated newsgroup installshield.ce.general which offers prompt support.

    They also have a no questions asked return policy, or at least they did for me.

    I returned the product because the CE toolkit is only half of what you will need to build a CE installer. You will also need the desktop version of Installshield. The CE version is $495, and the desktop version is between 600-700 dollars. So to build a CE installer using InstallShield be prepared to spend over $1100.

    You can find out more about InstallShield CE here.

    • CuteInstall - download here!

    Produced by AcerSoftTech in Shanghai, China, CuteInstall is a simple, easy to use install wizard for Windows CE. CuteInstall allows building install sets for all platforms and processor types.

    CuteInstall is not as nice as InstallShield, and does not have the support. You are on your own if you need to produce setup dll's, etc.  Also, take a look at the following list, compiled by Nathan Lewis over at InstallShield. This is a list of CuteInstall's shortcomings:

    1.  No localization capabilities.
    2.  Does not support the "file flags" used for WinCE installations.
    3.  Desktop-to-device installer does not provide any kind of scripting capabilities.
    4.  Desktop-to-device installer does not provide access Win32 APIs.
    5.  Has limited support for H/PC and P/PC devices.
    6.  Does not support HPC Professional devices.
    7.  Very little error checking done before compiling the INF file.

    On the other hand, you should consider CuteInstall in the following situations:

    1. shareware/freeware developer - low budget projects
    2. someone that needs a simple installer
    3. someone that wants to learn about inf/ini files

    You will be able to produce an install more quickly using InstallShield than CuteInstall. However, I personally believe that developers should at least try CuteInstall before plunking down the cash for ISCE.  It's freeware, so the only thing they lose is a little time if it turns out not to be helpful.

    You can download CuteInstall here.

    This installation toolkit will not automatically build your cab files, but it does take care of building an installation tool, and it comes with source code. 

    From the web page:

    If you are a WinCE author and are looking for an inexpensive way to create / obtain a setup program, look at EZSetup! Once you have created your .cab files (as described in the WinCE SDK), you are ready to use EZSetup. EZSetup takes your .cab files and *outputs* a compressed, self-contained, self-extracting Windows setup program that will set up your WinCE software.

    EZ-Setup is freeware and is released under the GNU Public License.

    8.2 How do I programmatically open a cab file on a CE device?

    Call \windows\wceload.exe using the .cab filename as the parameter, ie.

    Wceload myapp.cab

    8.3 How do I start an installation from the desktop?

    If you are planning on writing your own installation package, you will need to launch the windows ce services application manager, CEAppMgr.exe. To do this, open the registry key

    [SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\CEAPPMGR.EXE]

    to get the application manager location, then launch the exe providing the installer .ini file as a parameter.

    8.4 How can I keep a cab file from being erased after it is installed?

    Cab files allow installations to be run directly from the device. The .cab file extension is associated with wceload, which unpacks and installs files contained in the .cab file. Unfortunately, wceload deletes the .cab file after the installation is complete.

    You can set your .cab files to read-only to prevent this behavior. While this does not work on HPC 2.0 devices it does work on Palm Size and HPC Pro devices.

    Installshield provides a workaround for the HPC problem for their registered users.

    8.5 What command line switches are available for CeAppMgr?

    With the help of a hex editor I took a look inside of CeAppMgr.exe.  I found the following possible command line switches:

    /report - generates dialog boxes reporting the current install step status
    /askdest
    /noaskdest
    /SilentInstall

    Unfortunately, except for /report none of them appear to work. Perhaps the next version of CeAppMgr will implement this functionality. 

    8.6 My install set is having trouble registering controls on Palm-Size PC devices. What am I doing wrong?

    Many people have reported problems with their installation programs. Usually the installer would crash during registration of controls. Apparently wceload.exe on palm-size devices was not calling CoInitializeEx before starting the registration process. Microsoft has issued a fix for the problem, available at: http://support.microsoft.com/support/kb/articles/Q240/4/35.asp

    8.7 How can I programmatically open a .CAB file?

    Nathan Lewis of InstallShield posted this note regarding .cab files:

    You're developing an embedded system, and since Microsoft doesn't provide WCELOAD for embedded systems you're wanting to roll your own, right?  If that is the case, you can start by looking at the "Wotsit's Format" web site (http://www.wotsit.org/  ) in the Windows section.  They have the source to a program that will extract the various files from the CAB.  But that's the easy part...

    When CabWiz builds the CAB files, it does two things:  It compiles the INF into an undocumented format, and it renames all of the files in the CAB using the 8.3 format.  Any filenames that are shorter than 8 characters are padded with leading zeros, and any that are longer than 8 characters are converted to short filename format.  The extension for each file is also changed to use exactly three characters, from "000" to "999".  The compiled INF file is stored in the CAB with the "000" extension, and it contains the original filenames for all the other files.  The last file in the CAB always has the "999" extension, which seems to mean that you can never have more than 1,000 files in the CAB (including the compiled INF).

    So the basic steps would be:

        1.  Extract the CAB to a temporary directory.
        2.  Parse the compiled INF (*.000)
        3.  Rename the files to their original names and install them.

    The compiled INF is the only problem since it's not documented.  I guess you'll have to reverse engineer the file format.  You could start by creating a bunch of simple CAB files using CabWiz, then examine the "*.000" files to try and figure out how they're stored.

    9. Help

    9.1 What format is Windows CE Help in?

    Windows CE help files are simple html files. There are two file extension types for windows CE help; .htc and .htp. The first, .htc, is the main link into your applications help system. Typically, this help file should be named myapp.htc, where myapp is the name of your application. You can use only one help file, or have links into other files. Other files can be named whatever you like, but is it probably a good idea to use a name related to your application, like myapp_config.htp, myapp_usage.htp.

    9.2 How should I create help files?

    The simplest way I have found is to enter text in Word for Windows, creating links using bookmarks and hyperlinks, then save it as an html file.

    9.3 How can I programmatically launch help?

    Call \windows\peghelp %1, where %1 is the name of the help file to open.

    10. Internal/Undocumented/Hack Corner

    10.1 Ways to explore Windows CE.

    The Visual C++ Toolkit for Windows CE includes remote spy, remote registry editor and remote process viewer. Use these tools to find system window names, explore and tweak the registry, etc.

    Here's a list of ways you can learn more about Windows CE:

    1. Use dumpbin on SDK library files to find out about exported functions
    2. Use dumpbin on emulator dll's to find out about hidden functions
    3. Use loadlibrary to load executable images from ROM into RAM, then write them out to a file and inspect them.
    4. Get Platform Builder - lots of cool stuff here!
    5. Use virtualalloc, virtualcopy to copy process spaces to disk then inspect.
    6. Download CCMemory and inspect memory directly on the device.
    7. Don't bother with GetROMFileBytes - it only works on files that are not XIP (as far as I can tell).

    One other thing I found in the docs

    "Most miscellaneous files are compressed (with the exception of a few fonts). Code and read-only sections for the executables and DLLs are uncompressed to enable execute-in-place. The read-write sections are compressed because they are destined for RAM, where they will be [de]compressed."

    This means that you can dump the ROM to disk and files will be readable (non-compressed).  If you can figure out the ROM file structure you can have access to the entire system. Not only could you disassemble device drivers, but you could copy pocket office to the pspc and try it out.  I'll keep you posted on my progress.

    10.2 Hack while you can - it will be harder soon.

    Microsoft plans to tighten up security in its operating system by Windows CE 3.0. Certain functions, including VirtualCopy, SetProcPermissions, and other will be restricted to trusted applications only. Here's a brief list of functions that will be restricted:

    AddEventAccess, CeSetThreadPriority, CeSetThreadQuantum, CreateAPISet, ForcePageout, GetKPhys, GiveKPhys, GwesPowerOffSystem, LocalAllocInProcess, LocalFreeInProcess, LocalSizeInProcess, LockPages, PowerOffSystem, RegisterAPISet., RemoteLocaleAlloc, RemoteLocalFree, RemoteLocalRealloc, RemoteLocalSize, SetExceptionHandler, SetGwesPowerOffHandler, SetInterruptEvent, SetKMode, SetPowerOffHandler, SetProcPermissions, SetRAMMode, SetSystemMemoryDivision, SetWDevicePowerOffHandler, SystemStarted, ThisIsGwes, UnlockPages, VirtualCopy, VirtualSetPageFlags.

    10.3 BinaryCompress/BinaryDecompress - built in compression for windows ce

    You can use BinaryCompress and BinaryDecompress to perform buffer compression. BinaryCompress will take a buffer and return a compressed buffer. BinaryDecompress will take a compressed buffer and turn it back into the original. BinaryCompress and BinaryDecompress are defined in coredll.

    I assume the compression API uses the same compression as the object store. That compression is comparative - Windows CE compresses the buffer using several methods and takes the winner.

    Remember that all files kept in the object store are compressed, so this is redundant if you are just storing data in a file on your device.

    Here's an example:

    DWORD BinaryCompress(LPBYTE bufin, DWORD lenin, LPBYTE bufout, DWORD lenout);
    DWORD BinaryDecompress(LPBYTE bufin, DWORD lenin, LPBYTE bufout, DWORD lenout, DWORD skip);

    TCHAR string[] = _T("The quick brown fox jumps over the lazy man who did not come to the aid of his country in time.");
    BYTE buffer[1024];
    BYTE inpBuffer[1024];

    int length = BinaryCompress((BYTE*)string, wcslen(string) * sizeof(TCHAR), buffer, 1024);
    BinaryDecompress(buffer, length, inpBuffer, 1024, 0);

    AfxMessageBox((TCHAR*) inpBuffer);
    CString message;
    message.Format(_T("%i, %i"), wcslen(string), length);
    AfxMessageBox(message);

    In this example, the uncompressed buffer is 188 bytes and the compressed buffer is 148 bytes. Not the best, but it is free.

    10.4 SetProcPermissions - give your process access to other processes!

    This command will allow you to access memory in other process slots. It currently is available to all processes, but in future versions of CE it will be a restricted function.

    The prototype is void SetProcPermissions(WORD procFlag). Each bit in the procFlag refers to a process. To get access to process slot 0, 1, 2 and 3 then procFlag would be 0x000F. To allow access to all processes set the flag to 0xFFFF.

    10.5 RegFileCopy - make an instant copy of the registry

    This is a great little command. RegFileCopy(filename) will write the registry out to the specified filename. It takes about 1 second on my Casio e-100. There is also a command RegRestoreFile that will restore a .reg file to the registry. I have not used this one yet (as of 9/6) so I cannot comment on its use, but you may want to check it out.

    Unfortunately, the output file is not exactly text based. It does look pretty easy to parse, so you could write an application to convert it to text.

    10.6 GetFSHeapInfo - pointer to object store in physical memory

    Want to have some real fun, and possible really screw up your device? Try this little piece of code:

    DWORD objStoreLoc = GetFSHeapInfo();
    SetProcPermissions(0xFFFF);
    #define SIZE (1024*1024*4)
    BYTE* lpv;
    BOOL bRet;
    lpv = (BYTE*) VirtualAlloc(0, SIZE, MEM_RESERVE, PAGE_NOACCESS);
    bRet = VirtualCopy(lpv, (void*)objStoreLoc, SIZE, PAGE_READWRITE | PAGE_NOCACHE);
    if (bRet) {

    CFile output(_T("\\outputImage.bin"), CFile::modeCreate | CFile::modeWrite | CFile::typeBinary);
    output.Write(lpv, SIZE);

    }
    VirtualFree(lpv, 0, MEM_RELEASE);

    This writes 4Mb of raw object store out to a file, which you can copy to your pc and proceed to inspect with a hex editor. Remember, all Windows CE buffers will be little endian. The file system is FAT based, too, so search for directory entries and proceed from there.

    10.7 Predict.dll offers access to word prediction on Palm Size PC's

    Palm Size PC devices use soft keyboards. The standard keyboard also uses a moderate dictionary to try and guess you next word. You can also use the prediction routines and access the dictionary.

    Check out Predict dll and the following exported functions:

    PredictGetTables
    TrieIndexToWord
    TrieInit
    TriePrefixToRange

    I do not have the prototypes yet.

    You may also want to check out statdict.dat and dictprob.dat, two files apparently associated with the SIP dictionary gadget. I will post more info as I find it.

    10.8 Inspect ROM on the Casio E-100 and find interesting things.

    Curious about the internal workings of Windows CE? Want to see weird messages left by the developers, like Woo-hoo! Keyboard type is:  and discover hidden DLL exports like the ones used in jotcore1.dll - ZorroClose, ZorroOpen, ZorroTrain.

    It is pretty simple once you know where to look. Lucky for us, EXE's in ROM are not compressed, since they are run in place (Note that they are not in PE format either, but in .bin format.  Check the PB docs for info on .bin format). I made a little program that grabs 4Mb chunks of memory and writes them out to files. I then copy the files to the desktop and read them with a hex editor, like HEdit or Hackman. The ROM image in combination with Platform Builder is a great insight into the working of CE.

    Here's some sample code:

    #define PHYSADDR ((PVOID)((0xbf000000)))
    #define SIZE (1024*1024*4)

    BYTE* lpv;
    BOOL bRet;

    lpv = (BYTE*) VirtualAlloc(0, SIZE, MEM_RESERVE, PAGE_NOACCESS);
    bRet = VirtualCopy(lpv, (void*)PHYSADDR, SIZE, PAGE_READWRITE | PAGE_NOCACHE);
    if (bRet) {

    CFile output(_T("\\outputImage.bin"), CFile::modeCreate | CFile::modeWrite | CFile::typeBinary);
    output.Write(lpv, SIZE)

    }
    VirtualFree(lpv, 0, MEM_RELEASE);

    This code will write 4 Mb of ROM to a file in the root directory on your device. Simply copy this file to your desktop machine and use your favorite hex editor to review the contents of ROM.

    10.9 SetWindowsHookEx really does work, sort of.

    If you believe the Microsoft documentation, SetWindowsHookEx does not work under Windows CE. However, if you have read this FAQ you know that SetWindowsHookEx can be found in coredll (2.11 PSPC and HPC Pro versions only). The question is, what does it do, and is it a full implementation.

    I have been wanting to write an ATL control that passes messages (like WM_HIBERNATE) to VBCE. One way to do this is to create an ATL control, implement a connection point, and install a windows hook that monitors the message queue, and whenever a relevant message appears, fires an event off to VB. Unfortunately, every combination of

    gHook = SetWindowsHookEx(WH_CALLWNDPROC, (HOOKPROC) MyWndProc, gInstance, 0);

    returned an error 87 (incorrect parameter). Further searching through the PB header files reveals only three hook-related defines: 

    #define WH_JOURNALRECORD 0
    #define WH_JOURNALPLAYBACK 1
    #define WH_KEYBOARD_LL 20

    So I stopped using WH_CALLWNDPROC and tried WH_KEYBOARD_LL, and found that it worked quite well. I actually implemented a hook callback that watched for VK_OFF, and when detected, waited 2 seconds before returning. Whenever I pressed the power button the device would indeed wait before turning off. I also attempted to abort the power off by returning a non-zero number from the hook callback. While this does prevent the power button from powering off the device, it also causes the device to crash. Besides, VK_OFF is only generated when the off button is pressed, and not when a device time-out occurs, so the code was of marginal use. However, if you need to trap other low-level keyboard commands (ctrl-esc, etc) SetWindowsHookEx might be for you.

    While I imagine journal record and playback are implemented as well, I have not tried them.

    10.10 Calstore.dll can be used to access the task database API set.

    Calstore.dll manages access to various task database functionality. I could not find any documentation on the API offered by calstore on the device, but did find the list of exported functions in my Casio E-100 ROM.

    ReplAppointmentFromOid
    ReplDeleteAppointment
    ReplDeleteTask
    ReplGetCalendarObjectStore

    ReplReleaseAppointment
    ReplReleaseCalendarStore
    ReplReleaseTask
    ReplTaskFromOid

    APPTGetMonthData
    AdjustForBias
    AdvanceRecurNoClone
    AppointmentFromOid

    CompleteTask
    ConvertRenTzToSchedPlus
    ConvertSchedPlusToRenTz
    CreateAppointment

    CreateTask
    DeleteAppointment
    DeleteTask
    EditException

    EnumAppointments
    EnumExceptions
    EnumRecurAppointments
    EnumRecurAppointmentsEx

    EnumRecurPattern
    EnumTasks
    ExceptionFromOriginal
    FExceptions

    FindAppointmentFromGlobj
    FreeARI
    GetAppointmentData
    GetCalendarObjectStore

    GetExceptionInfo
    GetMinimumPeriod
    GetMonthData
    GetMonthDataEx

    GetPatternStartTime
    GetStartAndEndDate
    GetTaskData
    GetYearData

    IsActiveTask
    IsApptOid
    IsException
    IsMeetingUpToDate

    IsOccurrenceSameDay
    IsOidApptDbase
    IsOidTaskDbase
    IsOverlappingException

    IsRecurring
    IsRecurringTask
    IsTaskOid
    IsToday

    MapPMailtoRenRecur
    OidFromAppointment
    OidFromTask
    ReleaseAppointment

    ReleaseCalendarStore
    ReleaseTask
    RenFromStdTimeZoneInfo
    ReplSetApptAlarm

    ReplSetTaskAlarm
    ResetCache
    SendAttendeesUpdate
    SetAppointmentData

    SetAttendeeCriticalChange
    SetNextAlarms
    SetSnapDate
    SetTaskAlarms

    SetTaskData
    StartTasksEnum
    StdTimeZoneInfoFromRen
    StopTasksEnum

    TaskFromOid
    UpdateResponseEntry
    WriteLastAlarmDate

    The functions don't really do much good without the prototypes, but they are a starting place.

    Another way to access calstore functionality is using the Pocket Outlook Object Model, or POOM. See 3.5 How can I work with Pocket Outlook data? for more information.

    10.11 How can I reformat a compact flash card?

    Formatting a compact flash card from your CE device is fairly straightforward, once you know a couple of key pieces of information.  First, you need to open the compact flash device using:

    CreateFile(szVolume, GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);

    Next, you need to actually issues a format command to the device, as follows:

    // hVolume is the file opened with createFile
    // fv is FMTVOLREQ struct, which contains a DWORD
    DeviceIoControl(hVolume, IOCTL_DISK_FORMAT_VOLUME, &fv, sizeof(fv), NULL, 0, &cb, NULL);

    See Ben Beasley's source for a full compact flash formatter.

    11. Known CE bugs

    11.1 Createprocess on PSPC devices doesn't work

    For some reason CreateProcess does not appear to work on palm-sized devices. Try ShellExecuteEx instead.

    11.2 MFC CE 6.0 - Gettime with city set to foreign city. Returns 7/22/1863.

    I came across this post and verified it on my e-100 as well.

    The following code fails that worked previously in CE2.00 MFCs: (for Home
    Cities outside the US).


    CTime t = CTime::GetCurrentTime( );
    int y = t.GetYear( ) // returns 1863 instead of 1999
    I have traced it to CTime::GetLocalTm( ) returns a structure with tm_year
    = -37
    Likewise month, day and time information is incorrect in the structure.
    It works for a Home City set in the World Clock to US Cities and a few
    others in the world but fails when you choose cities in Australia and some
    other countries. My guess is that some of the TimeZone information is not
    stored for these cities and is causing GetLocalTm to fail. GetLocalTm did
    not exist in previous versions of the CE MFCs. GetCurrentTime and GetYear
    would previously work directly with the time value and not use GMT and time
    zones.
    Stephen Whitcher
    Mobile Technologies Pty Ltd
    Brisbane Queensland Australia (GMT+10:00 - no daylight saving)

    11.3 The voice control will not write recordings to any filename except the default.

    A recent post on microsoft.public.win32.programmer.wince discussed the fact the the voice recorder would not write the recording out to a user specified name, but always used the default. He was using the Casio E-100. He did the following:

    ::SendMessage(m_hWndVoice, VRM_RECORD, 0, (LPARAM) (LPTSTR)_T("\\myfile.wav") );

    but the resulting filename was always "\\_tmp_file0.wav" (or incremented file1, file2, etc). Another person confirmed the problem and said he had given up using the voice control and gone straight to using the wave API's.

    11.4 The 6.0 StrongArm compiler creates buggy code.

    "Roman" posted this on the microsoft.public.windowsce newsgroup on 9/30/99:

    The ARM compiler included with SDK version 12.00.8274.0 produces buggy code.  The ARM compiler included with 6.01 preview 12.10.8414 works well, and all bugs that found in (12.00.8274.0) appeared to be FIXED...

    We compiled the SHA HASH algorithm - it failed with the old ARM compiler, but SH3, SH4, MIPS worked fine.  The CAST algorithm simple crashed the application. We tried with preview 6.01 compiler and found that it worked perfectly!

    12. Windows CE Gossip Corner
    12.1 PPTP will be available in 3.0 but not 2.12.

    From Sebastion in the public.windowsce newsgroup, on 9/30/99: "PPTP support should come with Windows CE 3.0, but not with version 2.12. That's what I have heard yesterday from Microsoft."

    12.2 A new grid control will be released soon

    01/14/00 - I have heard that the grid control is nearly complete, and that a update for HPC/Pro users is available.  Microsoft is working on an HPC update as well, but it  is not quite ready yet.  If you are having problems with the grid control and are desperate, try sending a note to wcetwish@microsoft.com explaining your situation and asking for the update.

    02/13/00 - Apparently an updated, more reliable grid control will be released within the next week or two, if things go as planned.  Finally!

    12.3 The 2.12 version of Imgdecmp.dll supports 24-bit bitmaps.

    I received a couple of comments suggesting that CE 2.12 version of imgdecmp.dll supports 24-bit color. The current imgdecmp.dll on OEM devices supports 8-bit color only.

    12.4 When will VCCE 6.5 be released?

    From Steve Maillet in the win32.programmer.wince group on 10/9: "[VCCE 6.5 is] not officially announced as of yet. but based on time frames in the past it was 6-8 weeks after PB was released. SO a couple months is what I expect."

    SP3 support should be supported in the forthcoming VC++ toolkit for Windows CE V6.5.

    Copyright CEGadgets.com 1998-2001. All rights reserved.
    Microsoft and Windows are registered trademarks of Microsoft Corporation
    No guarantee or warranty of any kind is offered for information, controls and software on this or any other CEGadgets page. Use at your own risk.

    Windows CE Developers FAQ

    Posted by krsuncom
    개발이야기2007. 8. 3. 13:09

    Making A2DP work on your PPC-6700 is very simple. All you have to have are the file attached below, your PPC-6700, and a A2DP compatible headset.
    1. Download the attached .zip file on your ppc. Either directly or activsync it over. And extract files. NOTE: if you have the new ROM, if not your gonna have to activsync all the files over after extracted on your desktop.
    2. Copy Avrcp_MPplugin.dll, bta2dp.dll, & sbc.dll to windows directory on phone.
    3. Install the Tornado_A2DP.CAB and then install the Tor_A2DP_cert.CAB
    4. Soft reset the device.
    5. Pair your headset with the phone, making sure you select the set as wireless stereo option, and your DONE!
    --------------------------------------------------------------------------
    If you have an Axim X51v or X50v running Windows Mobile 5 and a Bluetooth Headphone you'd like to use with it, try this:
    1. Extract the A2DP.ZIP file to a folder and copy the contents to your Axim:
    A) tor_a2dp.cab
    B) tor_a2dp_cert.cab
    C) 3 DLLs avrcp_mpplugin.dll, bta2dp.dll, sbc.dll
    D) a2dp.reg
    2. Copy the three DLL files to \My Device\Windows and put the cabs and reg file into one directory.
    3. Click on tor_a2dp.cab to install.
    4. Click on tor_a2dp_cert.cab to install.
    5. Turn power off completely or soft reset to register the changes.
    6. Turn unit on. Go to:
    Bluetooth > Devices> New partnership
    7. After your BT stereo client is ready to pair, select "Wireless Stereo".
    You may have to use a passkey if your headphone specifies, ie: "0000".
    8. Tap and hold the client, and set it as Wireless Stereo
    DONE.
    If you are successful, please post back and include:
    A. The device (e.g. X51v) and the BT headphone model that you used.
    B. How you made it work if you encountered difficulty.
    Credits:
    Thanks to everyone involved at the XDA-Developers.com and the pdaphonehome.com forums.
    References:
    1. A2DP support on 818pro - xda-developers
    2. A2DP on Tornado!! - xda-developers
    3. A2DP on Tornado!! - xda-developers
    4. http://www.pdaphonehome.com/forums/s...ad.php?t=71436
    Edit
    When you download the attached file "attachment.php", don't forget to rename it to "a2dp.zip".
    --------------------------------------------------------------------------------
    If you have a blackjack is very simple.
    1. Download the attached .zip file on your phone. Either directly or activsync it over. And extract files. NOTE: if you have the new ROM, if not your gonna have to activsync all the files over after extracted on your desktop.
    2. Copy the file to windows directory on phone.
    3. Install the A2DP.exe and select the set as A2DP on option.
    4. Soft reset the device. your DONE!
    That simple now you can listen to your favorite music with stereo quality!

    Attached Files

    File Type: zip
    ppc6700_a2dp.zip (83.3 KB, 0 views)

    File Type: zip
    Tor_A2DP.zip (43.0 KB, 0 views)

    File Type: zip
    blackjack_A2DP.zip (63.4 KB, 6 views)

     

    Bluetooth (A2DP)

    Posted by krsuncom