Wednesday, March 16, 2016

Crystal Reports csprintdllg.dll error with No Details


We had a user that could not print from the Crystal Reports Print ActiveX add-on for Internet Explorer on the terminal server.  It worked fine for other users on the term server, myself included, and behaved differently for this user when logged onto a different terminal server.  The error message was simply the the Windows red X dialog, with the text "csprintdllg.dll" in the title and nothing in the body of the dialog except an OK button.


Things we tried, one or more of them being the solution:
  • Clear all the TEMP files from the user's profile (e.g. C:\Users\username\AppData\Local\Temp)
  • Clear all the Temporary Internet Files from the user's profile (e.g. C:\Users\username\AppData\Local\Microsoft\Windows\Temporary Internet Files)
  • Open Internet Explorer and clear the cache/history completely, then restart it.
    • Note: should NOT have checked the top checkbox there, about Preserving Favories website data.
  • Try using Crystal Reports Print ActiveX control again.

Tuesday, September 08, 2015

Windows 10 Shortcut Keys

Note: these were taken from an MSDN email, which linked to a Word document (.docx). Bad form I thought, so I made a web page that would have the same content for my reference, and that of colleagues.
Windows key Open and close the Start menu.
+1, +2, etc.Switch to the desktop and launch the nth application in the taskbar. For example, +1 launches whichever application is first in the list, numbered from left to right.
+AOpen the action center.
+BHighlight the notification area.
+CLaunch Cortana into listening mode. If Cortana is unavailable or disabled, this shortcut has no function. Users can begin to speak to Cortana immediately.
+DSwitch between Show Desktop (hides/shows any applications and other windows) and the previous state.
+ESwitch to the desktop and launch File Explorer with the Quick Access tab displayed.
+HOpen the Share charm.
+IOpen the Settings app.
+KOpen the Connect pane to connect to wireless displays and audio devices.
+LLock the device and go to the Lock screen.
+MSwitch to the desktop and minimize all open windows.
+OLock device orientation.
+POpen the Project pane to search and connect to external displays and projectors.
+RDisplay the Run dialog box.
+SLaunch Cortana. Cortana is only available in certain countries/regions, and some Cortana features might not be available everywhere. If Cortana is unavailable or disabled, this command opens Search. Users can begin to type a query immediately.
+TCycle through the apps on the taskbar.
+ULaunch the Ease of Access Center.
+VCycle through notifications.
+XOpen the advanced menu in the lower-left corner of the screen.
+ZOpen the app-specific command bar.
+ENTERLaunch Narrator.
+SPACEBARSwitch input language and keyboard layout.
+TABOpen Task view.
+,Peek at the desktop.
+Plus SignZoom in.
+Minus SignZoom out.
+ESCAPEClose Magnifier.
+LEFT ARROWDock the active window to the left half of the monitor.
+RIGHT ARROWDock the active window to the right half of the monitor.
+UP ARROWMaximize the active window vertically and horizontally.
+DOWN ARROWRestore or minimize the active window.
+SHIFT+UP ARROWMaximize the active window vertically, maintaining the current width.
SHIFT DOWN ARROWRestore or minimize the active window vertically, maintaining the current width.
+SHIFT+LEFT ARROWWith multiple monitors, move the active window to the monitor on the left.
+SHIFT+RIGHT ARROWWith multiple monitors, move the active window to the monitor on the right.
+HOMEMinimize all nonactive windows; restore on second keystroke.
+PRNT SCRNTake a picture of the screen and place it in the Computer>Pictures>Screenshots folder.
+CTRL+LEFT/RIGHT arrowSwitch to the next or previous virtual desktop.
+CTRL+DCreate a new virtual desktop.
+CTRL+F4Close the current virtual desktop.
+?Launch the Windows Feedback App.

Saturday, October 30, 2010

Console.Writeline() Hangs if User clicks in Console Window

The Problem

We had this issue with some .NET Console Applications at work, although I imagine the framework of the application doesn't really matter. The scenario is that you have a console app which needs to run in the background for a long time, in our case a FileCreate watcher script. But someone is administering the server or machine, and accidentally clicks somewhere on the console window. This causes the title of the window to change from "C:\Windows\system32\cmd.exe" or something like that to "SELECT - C:\Windows\system32\cmd.exe". Now the application will halt its execution the next time a Console.Write() or Console.WriteLine() occurs in the application.

The Solution

This problem is actually a feature of the console window in Windows XP, called "QuickEdit." Normally, you have to go to the menu at top-left before you can select something in the console window for copying, but with QuickEdit on you can do this at any time and are in danger of halting your application. To turn it off:

  1. Goto the menu by clicking icon in top-left corner of console window.
  2. Goto "Properties"
  3. On the Options tab, under "Edit Options," un-check "QuickEdit Mode"
  4. Click "OK" and confirm that you would like to apply changes to all windows with same title.

Apparently there is a way to adjust this setting from your application, but I didn't really need to since I was only worried about this on one server. Also, the instructions are in VB.NET, eww.

Friday, December 04, 2009

My Issues w/ LastPass

I tried LastPass as a password management solution and I have a few issues:

  • LastPass is very browser-centric or website-oriented. I do a lot of IT stuff being a Software Developer, and I need passwords for databases, workstations, program keys, etc. With LastPass, it is a bit clunky to open up your vault, try to find the right entry (see my next gripe) and then copy the information out and paste into the program.
  • LastPass has a "group" (folder) for each entry, but just one group/folder. I prefer Passpack's ability to tag every entry with multiple tags, or KeePass' ability to have a nested hierarchy of folders/groups. I might especially dislike LastPass' implementation of this because I tried importing 60 some passwords from KeePass into LastPass, and it was a mess to try to sort out the password for my two jobs and home.
  • As far as I can tell, LastPass does not very elegantly handle the fact that I do a lot of development and "intranet" site use. So, I will have a buttload of different passwords for the domain "localhost" and for the domain "" (which LastPass handles as, etc.
  • The "Identity" thing doesn't work how you'd expect. I wanted it to partition out all my passwords into separate accounts, in essence: "Personal" "Job1" "Job2", etc. Instead, it just only exposes passwords you select from the primary account to these sub-identities. If you delete the password for a site in one identity, it will be gone in the primary identity and others that have a view of it, or so it seems.
If I could somehow combine the way that KeePass works and LastPass, I'd have my perfect tool. Or maybe if PassPack dropped the 100 password limit, and had a decent Firefox plug-in or desktop widget.

Monday, August 31, 2009

Script: SugarCRM Click-Thru Target to Lead in Email Campaign

A quick post here about a little script I wrote for SugarCRM.

Update: I forgot to mention that I am working with SugarCRM version 5.2.0i here. Results may vary (read "not work") with other versions.

We were having trouble with the workflow process of running an Email Campaign in SugarCRM. Namely, we had like 100 some clickthru's in an email campaign, and I really wanted to just click a button to make all of those clickthru targets become leads. I would have even settled for the click-thru list being clickable links and doing it one-by-one (well, i would have had the marketing guys do that), but even that is not possible. They are not clickable links that redirect you to the target details view - instead, they are just a static list with only the related hyperlink being clickable.

Details of the problem here:

So, I wrote a php script to solve our dilemma:

Be sure to change the Database user/password/name to match your configuration, and to change the
$campaign_id and $user_id
variables at the top of the file.

Disqus for A Nofsinger's Blog