inspecting *.lib files on Windows mentions dumpbin.exe from Microsoft.


Microsoft COM – a few keywords

“COM library” vs “type library”???

I suspect most code (whether people mention COM or not) written before dotnet are probably technically COM code???

— dotnet without the dotnet context —

Client/server — A COM client is whatever code or object that gets a pointer to a COM server and uses its services. A COM server is any object that provides services to clients. In-process servers are implemented in a dynamic linked library (DLL), and out-of-process servers are implemented in an executable file (EXE). Out-of-process servers can reside either on the local computer or on a remote computer.

Registry — COM types are usually listed by GUIDs in the registry, though some COM types are RegFree

DLL — COM components are usually implemented in DLL files, and registration allows only a single version of a DLL. Dotnet classes also exist in DLL or EXE files.

MS-Office – For example COM allows Word documents to dynamically link to data in Excel spreadsheets
Bindings — COM interfaces have bindings in several languages, such as C, C++, Visual Basic

ActiveX – is part of COM

— Excel Addin —
All COM Add-ins must implement each of the five methods of this interface: OnConnection, OnStartupComplete, OnAddinsUpdate, OnBeginShutDown, and OnDisconnection.


dll late binding via LoadLibrary()

[[beginning vc++2010]] P1179 — a host app can run for a while before loading a dll. I guess in the interim a user can replace the dll.

benefit — smaller app footprint . All those large DLLs will only load into memory when needed, on-demand.


exit code lost – Horror story on Microsoft dev environment

This is such a poorly documented feature!

If you run your exe and then echo %ERRORLEVEL% you can get the correct exit code 99. If you use WScript.Shell Exec to invoke it, then check the ExitCode property you always see 0.!topic/microsoft.public.scripting.vbscript/gR_Gi87qojU shows the solution.

Do While objExec.Status = 0
WScript.Sleep 100

WScript.Echo objExec.ExitCode


windows task scheduler tips

To view the hidden scheduler log, use DOS to list the files in c:windowstasks folder. Or use notepad++ on c:WINDOWSTasksSchedLgU.Txt

To increase the log size limit, follow

— forever running tasks

This will block subsequent reruns.

Fix: try the max run time (default 72 hours)

Fix: To kill forever-running tasks, restart the task scheduler “service” itself

Some reasons for a forever-running task

* vbs may need to use wscript.quit


win service ^ once-a-minute scheduled task

If an operation is likely to hit various failures, then a service is troublesome as it would need restarts.

Under a service, the operation should take a few seconds only.

Service can have higher frequency than once a minute.

Service can run under LocalSystem without any password.


q(SC( vs q(NET) commands

The net command waits patiently for the request service to start (or stop), and therefore can report the success/failure (see


The sc command can easily query the state of a service.

__Tan Bin (+65)6530 1386 OC Centre #17__



non-intrusive test – if current process has admin privilege

Just run qq(openfiles) command.



Information in this message is confidential. It is intended solely for the person or the entity to whom it is addressed. If you are not the intended recipient, you are not to disseminate, distribute or copy this communication. Please notify the sender and delete the message and any other record of it from your system immediately.



window procedure in microsoft windows app, briefly explains that Every (visual) window is an instance of a window class. “Every window class has a window procedure, and every {{visual}} window created with that class uses that same window procedure to respond to messages.”

Therefore every visual window has a window procedure – a function that processes all messages sent or posted to All window instances of the class. The window procedure (i.e. callback) has the business logic.