Showing posts with label microsoft_stuff. Show all posts
Showing posts with label microsoft_stuff. Show all posts

Wednesday, November 26, 2008

restore xp default task bar

---
'xp_taskbar_desktop_fixall.vbs - Repairs the Taskbar when minimized programs
don't show.
'© Kelly Theriot and Doug Knox - 8/22/2003
//////////////////The following is the script

Set WSHShell = WScript.CreateObject("WScript.Shell")

Message = "To work correctly, the script will close" & vbCR
Message = Message & "and restart the Windows Explorer shell." & vbCR
Message = Message & "This will not harm your system." & vbCR & vbCR
Message = Message & "Continue?"

X = MsgBox(Message, vbYesNo, "Notice")

If X = 6 Then

On Error Resume Next

WshShell.RegDelete
"HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\StuckRects2\"
WshShell.RegDelete
"HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\StreamMRU\"
WshShell.RegDelete
"HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Streams\Desktop\"

WshShell.RegDelete "HKCU\Software\Microsoft\Internet Explorer\Explorer
Bars\{32683183-48a0-441b-a342-7c2a440a9478}\BarSize"

P1 = "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\"

WshShell.RegWrite p1 & "NoBandCustomize", 0, "REG_DWORD"
WshShell.RegWrite p1 & "NoMovingBands", 0, "REG_DWORD"
WshShell.RegWrite p1 & "NoCloseDragDropBands", 0, "REG_DWORD"
WshShell.RegWrite p1 & "NoSetTaskbar", 0, "REG_DWORD"
WshShell.RegWrite p1 & "NoToolbarsOnTaskbar", 0, "REG_DWORD"
WshShell.RegWrite p1 & "NoSaveSettings",0,"REG_DWORD"
WshShell.RegWrite p1 & "NoToolbarsOnTaskbar", 0, "REG_DWORD"
WshShell.RegWrite p1 & "NoSetTaskbar",0,"REG_DWORD"
WshShell.RegWrite p1 & "NoActiveDesktop",0,"REG_DWORD"
WshShell.RegWrite p1 & "ClassicShell",0,"REG_DWORD"

p1 = "HKCU\Software\Microsoft\Windows\CurrentVersion\Group Policy
Objects\LocalUser\Software\Microsoft\Windows\CurrentVersion\Policies\Explore
r\"

WshShell.RegWrite p1 & "NoCloseDragDropBands", 0, "REG_DWORD"
WshShell.RegDelete p1 & "NoMovingBands"

p1 = "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell"

WshShell.RegWrite p1, "explorer.exe", "REG_SZ"

p1 = "HKCU\Software\Microsoft\Internet Explorer\Explorer
Bars\{32683183-48a0-441b-a342-7c2a440a9478}\"
WshShell.RegDelete p1 & "BarSize"
WshShell.RegWrite p1, "Media Band", "REG_SZ"

On Error Goto 0

For Each Process in GetObject("winmgmts:"). _
ExecQuery ("select * from Win32_Process where name='explorer.exe'")
Process.terminate(0)
Next

MsgBox "Finished." & vbcr & vbcr & "© Kelly Theriot and Doug Knox", 4096,
"Done"

Else

MsgBox "No changes were made to your system." & vbcr & vbcr & "© Kelly
Theriot and Doug Knox", 4096, "User Cancelled"

End If

Wednesday, May 7, 2008

GC in c# is not as stronger as i thought..

relative links:
http://forums.microsoft.com/forums/ShowPost.aspx?PostID=3242882&SiteID=1
http://www.mztools.com/articles/2005/mz2005012.aspx

key problem:
reference to a local variable after exit the region where the variable is defined.

So, I recall the reference count in c++.

////////
//example from http://www.mztools.com/articles/2005/mz2005012.aspx

When using a C# add-in to receive events from Visual Studio .NET, it can happen that after a while the add-in no longer receives them. Consider this code:

private _DTE applicationObject;

public void OnConnection(object application, Extensibility.ext_ConnectMode connectMode,
object addInInst, ref System.Array custom)
{
EnvDTE.SolutionEvents solutionEvents;

applicationObject = (_DTE) application;
solutionEvents = applicationObject.Events.SolutionEvents;
solutionEvents.Opened += new _dispSolutionEvents_OpenedEventHandler(SolutionOpened);
}

private void SolutionOpened()
{
MessageBox.Show("Solution opened");
}
Since the solutionEvents variable is local to the OnConnection procedure, when the procedure exits the variable is no longer used and it will be garbage collected the next time that the garbage collector performs its job. Until that moment you receive events, but after that the event handler is disconnected. To solve this problem, you must declare the solutionEvents variable at class level, not at procedure level:
private _DTE applicationObject;
private EnvDTE.SolutionEvents solutionEvents;
public void OnConnection(object application, Extensibility.ext_ConnectMode connectMode,
object addInInst, ref System.Array custom)
{
applicationObject = (_DTE) application;
solutionEvents = applicationObject.Events.SolutionEvents;
solutionEvents.Opened += new _dispSolutionEvents_OpenedEventHandler(SolutionOpened);
}

private void SolutionOpened()
{
MessageBox.Show("Solution opened");
}

}