Sunday, November 25, 2007
Resolving an embedded Control ID in JavaScript
<asp:button id="ClickMe" runat="server" onmouseover="javascript:toggleMyControlColor();" onmouseout="javascript:toggleMyControlColor();" Text="Click Me" / >
function toggleMyControlColor()
{
var myControl = $get('<%= ClickMe.ClientID %>');
if(myControl.styles.backgroundColor == 'red')
{
myControl.styles.backgroundColor = 'blue'
}
else
{
myControl.styles.backgroundColor = 'red'
}
}
I have used this technique in MasterPages, UserControls, and WebParts (including those hosted in SharePoint), and it works like a charm.
Microsoft Word - Single-Spaced Paragraphs Convert to Double-Spaced in HTML
I found this nice little snippet below. I was hoping this would help me with the Word 2007 blog feature (which is loosely integrated with Blogger) but unfortunately this prevents you from being able to tab. Nevertheless, it's a nice tip to know.
WD98: Single-Spaced Paragraphs Convert to Double-Spaced in HTML
Prior to saving your document in HTML format, change the paragraph marks to manual line breaks. To do this, follow these steps:
- Open your Word document.
- On the Edit menu, click Replace. If there is a More button, click it.
- In the Find What box, click Special, and then click Paragraph Mark. The ^p character will appear in the Find What box.
- In the Replace With box, click Special, and then click Manual Line Break. The ^l character will appear in the Replace With box.
- Click Replace All, click OK, and then click Close.
Formatting C# for Blogger
Copy Source As Html Visual Studio Add-In
- Download CopySourceAsHtml Visual Studio Add-In. (As of this writing, only available for 2005).
- Install the Add-In in Visual Studio. (I had to restart Visual Studio after installing, but this may have something to do with Windows Vista interoperability.)
- Select some code and then pick "Copy as HTML" from the content menu item that appears. (Due to a bug in the Blogger html parser that randomly deletes spaces ( ), you will want to do steps 3-4. This will ensure that the tabs are preserved. Otherwise, you will find that tabs may disappear after you try to edit the post later on.)
- When the "Copy as HTML" dialog appears, ensure that only the following checkboxes are selected: "Wrap Words", "Embed Styles", "Strip line breaks", "Remove indentation".
- Paste the text into Notepad and then replace with <span style='margin-left:2em' />
- Copy the results into Blogger.
- If you want to add comments above or below, make sure you are in Edit Html mode and add text before or after the markup. You can then switch to Compose mode.

Create Your Own Parser
This is a very simple code snippet that could be used to start your own parser. It does create Blogger friendly tabs, but only highlights keywords. (Note: the following code was posted using the first approach.)
private string UpdateBloggerHTML(string plainToHtml)
{
string[] cSharpKeywords = {"using", "abstract", "as", "base", "bool", "break", "byte", "case", "catch", "char", "checked",
"class", "const", "continue", "decimal", "default", "delegate", "do", "double", "else", "enum", "event", "explicit",
"extern", "false", "finally", "fixed", "float", "for", "foreach", "goto", "if", "implicit", "in", "int", "interface",
"internal", "is", "lock", "long", "namespace", "new", "null", "object", "operator", "out", "override", "params",
"private", "protected", "public", "readonly", "ref", "return", "sbyte", "sealed", "short", "sizeof", "stackalloc",
"static", "string", "struct", "switch", "this", "throw", "true", "try", "typeof", "uint", "ulong", "unchecked",
"unsafe", "ushort", "using", "virtual", "void", "volatile", "while"};
plainToHtml = plainToHtml.Replace("\r\n", "<br />");
plainToHtml = plainToHtml.Replace(" ", "<span style='margin-left: 1em;' />");
string newKeyword = "";
foreach (string cSharpKeyword in cSharpKeywords)
{
newKeyword = @"\b" + cSharpKeyword + @"\b";
plainToHtml = Regex.Replace(plainToHtml, newKeyword, "<font style='color:#0000FF'>" + cSharpKeyword + "</font>");
}
return plainToHtml;
}
Friday, July 27, 2007
Speed Up Windows Start Menu
- Open the Start Menu, type regedit, and click OK.
- Navigate to HKEY_CURRENT_USER\Control Panel\Desktop and look for MenuShowDelay value. If it is not there you can create a string value with that name.
- By default it is 400, but you can speed it up exponentially by changing it to 0.
- Once you are done, close the registry. You may have to restart your computer to see a change.
Thursday, July 26, 2007
Break Corporate Policy And (gasp!) Allow Windows Update
This is probably fine for Joe corporate user who may unwittingly download an update that ends up wreaking havoc on his computer. However, as a developer I often need to update my computer so that I can have access to various patches and hot fixes that allow me to (gulp) improve my productivity.
Anyhow, I'm not encouraging anyone to knowingly break their company's security policy. BUT, if you must, here are the steps.
- Open the registry by opening Start - Run, type regedit, and click OK.
- Navigate to the following registry key: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
- If it doesn't exist already, create a new registry DWORD value called NoWindowsUpdate.
- Double click on this value and make sure the value is 0.
- Now you can go to Windows Update!
For more information, see Microsoft Support article:
I especially like this part of the article:
"For corporate users who are connected to a corporate network
To resolve this issue, contact the local system administrator to determine whether Windows Update access is disabled by Group Policy settings."
Visual Studio Project Template GUIDs - (What's up with those "project not supported" errors?)
- Open the csproj file in Notepad.
- Find the
node . It is under . - This is the GUID that corresponds to a project template type.
- If you are fortunate enough to have access to the machine where the project was created, you can open the registry and then find what type of project template it is. Otherwise you can try Google or consult my ongoing list below.
Check your Registry
- Open Start - Run, type regedit, and click OK.
- Navigate to: HKLM\SOFTWARE\Microsoft\VisualStudio\8.0\Projects
- Here you will find a list of all your project templates that are installed. (Note: These are all installed in "[Install Directory]\Program Files\Microsoft Visual Studio 8\Common7\IDE\ProjectTemplates")
- The Default string value data is the name of the project you need. You can usually
Alternate Resolution
If you have access to both machines you are trying to synchronize, one alternative is to open Visual Studio and click on About Microsoft Visual Studio from the Help menu. From here you can compare versions and installed products. However, you may end up spending a lot of time installing various products when you only need one thing installed.
{
string projectTemplateRegDir = @"SOFTWARE\Microsoft\VisualStudio\8.0\Projects";
string[] projectGuids =
string projectTemplateList = "";
foreach (string projectGuid in projectGuids)
{
projectTemplateList +=
projectGuid + "\t" +
}
return projectTemplateList;
Visual Studio 2005 SP1 - Installation Woes - "did not pass the digital signature check"

Error 1718. File C:\Windows\Installer\2ce9ba.msp did not pass the digital signature check. For more information about a possible resolution for this problem, see http://go.microsoft.com/fwlink/?LinkId=73863
The following steps from Microsoft Support worked for me:
- Click Start, click Run, type regedit, and then click OK.
- In Registry Editor, locate and then click the following registry key:
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Safer\CodeIdentifiersNote Before you modify this key, we recommend that you back up this key. To do this, right-click CodeIdentifiers, and then click Export. Save the file to a location where you can find it on the computer. - Change the PolicyScope registry value. To do this, double-click PolicyScope, and then change the setting from 0 to 1. Note: If this registry value does not exist, create a new DWORD value.
- Close Registry Editor.
- Click Start, click Run, type cmd, and then click OK to open a Command Prompt window.
- At the command prompt, type the following command, and then press ENTER:
net stop msiserverThis command stops the Windows Installer service if the service is currently running in the background. When the service has stopped, close the Command Prompt window, and then go to step 7.Note If you receive the following message at the command prompt, close the Command Prompt window, and then go to step 7:
The Windows Installer service is not started - Try installing again!
