Wednesday 26 June 2013

Windows context menu fragments left on desktop

Selected Item in Context Menu stays visible forever. I right click, up pops the context menu, I select a menu item, the context menu disappears, but leaves the selected menu item permanently visible on top of all other desktop windows. Annoying!! I've had this occur a lot in XP and now Win7 too. Finally I find a solution.. Kill the Desktop Window Manager (dwm.exe) in the task manager. It will restart itself and the zombified menu item will disappear.

UPDATE: 

    Alternatively, and much safer.. Set the desktop bit depth to a different bit depth (16bit), then select NO when asked to keep the setting. The screen gets refreshed, orphan elements disappear. Simple and effective.

UPDATE:

..but not permanent.

Maybe more luck with this..


Nope, fragments just reappear soon enough. Grr..


Friday 14 June 2013

Symlinks in perforce in windows

Basically, if you are getting small files where symlinks should be, run perforce as administrator. Fuller description here : http://answers.perforce.com/articles/KB_Article/Enabling-Symlinks-on-Windows

Thursday 30 May 2013

Visual Studio 2012 - "Project file '' has been renamed or is no longer in the solution"

Sometimes when messing about with projects, this unhelpful popup will plague you.

To get some more info about the actual cause..

1. Build this - https://github.com/CoherentLabs/DumpReferencesAddIn

2. Create C:\Users\\Documents\Visual Studio 2012\Addins 

3. Copy in there DumpReferencesAddIn.dll which you built and DumpReferencesAddIn.AddIn which you didn't. 

4. Restart VS2012, load your troublesome solution. 

5. Right click on the solution and select "Dump References". 

6. Enjoy.

Saturday 18 May 2013

Use a custom icon in a dialog box in windows

When creating a windows dialog, the icon in the top left corner is the dull standard one. Add your own funky alternative by adding this code! SendMessage(mainDialog,WM_SETICON,ICON_BIG,(LPARAM)::LoadIcon(hInstance, MAKEINTRESOURCE(IDI_YOURICON))); SendMessage(mainDialog,WM_SETICON,ICON_SMALL,(LPARAM)::LoadIcon(hInstance, MAKEINTRESOURCE(IDI_YOURICON))); SendMessage(mainDialog,WM_SETICON,ICON_SMALL2,(LPARAM)::LoadIcon(hInstance, MAKEINTRESOURCE(IDI_YOURICON)));

Tuesday 2 April 2013

Running commands after exe exit


I needed a EXE to call it's related uninstall.exe when it had finished running. There are many solutions to this but I was after something short and sweet.

Here's what I came across.
http://stackoverflow.com/a/3458433/2237946

so modified to my requirements..


std::string g_PostScript;
int main()
{

g_PostScript+="notepad.exe \"hello.txt\" & "; //add a command
g_PostScript+="uninstall.exe & "; //and another one..

//time to exit
ApplyPostScript();
return 0;
}
void ApplyPostScript()
{
if (g_PostScript.length()==0)
return;
g_PostScript="cmd.exe /C ping 1.1.1.1 -n 1 -w 3000 > Nul & "+g_PostScript;
STARTUPINFO si = {0};
PROCESS_INFORMATION pi = {0};

CreateProcess(NULL, (LPSTR)g_PostScript.c_str(), NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, NULL, &si, &pi);
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
}

Monday 25 March 2013

Why is this header being included?

Often I'll find a visual studio project not compiling as a header file generates an error. Then I realise there's no need for that header to be needed as it's totally unrelated.
So why is it being included?
It can take a lot of guesswork to track down the reason in a large project, but here's a quick method of showing the whole header tree for a cpp.

Add "/ShowIncludes" to the command line options for that cpp. A recursive list is displayed of each included file. Hopefully an unnecessary header file can be identified to enable this tree to be pruned.

Alternatively set the compile option:
http://msdn.microsoft.com/en-us/library/hdkef6tk(v=vs.80).aspx

Wednesday 6 March 2013

Vijay World: P4EXP Windows Explorer Integration - Problem Solve...

Vijay World: P4EXP Windows Explorer Integration - Problem Solve...: There were lots of issues  and i was struggling to use p4exp which come in bundle with p4v setup. i Couldn't configure it properly for a...

I forget this one every time when installing perforce explorer integration. Duh.

Subst drives only visible to some applications?

Well this had me stumped for a while. I have a Z drive mapped to a folder on C using VisualSubst.

Yet some applications would deny that the Z drive existed. Very odd.

Finally it dawned on me - the applications which could not see Z were running as administrator.

The solution? Run VisualSubst again, this time as administrator and the drive mapping will not be listed.. add it here and voilá. All applications can now see your mapped drive letter.

--


For a better solution, see http://en.wikipedia.org/wiki/SUBST#Method_3

Sunday 13 January 2013

UPnP - auto port forwarding in C++ for windows

How hard can it be?

I want my windows program to be able to automatically configure the router to forward a port.
I soon find some source code https://compilr.com/tntblow/asdas/upnpnat.cpp
..yes it works!
I eventually need to use this in my program so I incorporate the source into my project, use it, but it doesn't work. "discovery error is Fail to find an UPNP NAT.". Odd.
I last tested the source ages ago while on XP, and now on Win7. I wonder.. I run the program on and old xp laptop and success, UPNP NAT is found, although further errors occur.

Time for another solution..
A-ha, windows includes some UPnP support!
http://msdn.microsoft.com/en-gb/library/windows/desktop/aa382290(v=vs.85).aspx
Erm.. only seems to search for the UPnP device, and it's not clear how to actually configure the thing. Hmm, shelve that..

The search continues. "class PortForward"
http://social.msdn.microsoft.com/Forums/en-GB/netfxnetcom/thread/41701acc-22d5-42d1-87e1-7f4dd5f1b666
Looking promising.. but lots of compile errors to sort out.. hmm

ooh something else, maybe even simpler!
http://forum.emule-project.net/index.php?showtopic=34100

How odd, spmc is always NULL after this..

get_StaticPortMappingCollection(&spmc);


Maybe this is an XP vs Win7 thing.
Well this doesnt look very promising..
http://support.microsoft.com/kb/928233

More searching..
MiniUPnp. Surely..
Oooh there are prebuild win32 exes.. Grab! Run!

C:\MiniUPnP>upnpc-static.exe -a 192.168.0.2 53200 43300 UDP
upnpc : miniupnpc library test client. (c) 2006-2012 Thomas Bernard
Go to http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
for more information.
List of UPNP devices found on the network :
 desc: http://192.168.0.1:49153/gateway.xml
 st: urn:schemas-upnp-org:device:InternetGatewayDevice:1
Socket error: connect, 0
Found a (not connected?) IGD : http://192.168.0.1:49152/upnp/control/WANIPConnection
Trying to continue anyway
Local LAN ip address : 192.168.0.2
Socket error: connect, 0
ExternalIPAddress = (
Socket error: connect, 0
AddPortMapping(43300, 53200, 192.168.0.2) failed with code -3 (UnknownError)
Socket error: connect, 0
GetSpecificPortMappingEntry() failed with code -3 (UnknownError)
InternalIP:Port = ╦t^±╩t☺:_
external (:43300 UDP is redirected to internal ╦t^±╩t☺:_ (duration=╦t┴úð¯H■() 

Yikes. Not good.

I have UPnP enabled in my router, and it list entries there from other members of the LAN, so I would expect the problem lies in the code.

Back to "class PortForward" listed earlier..
Compiles.. run and get:
PortForward::Access Nat->get_StaticPortMappingCollection succeeded, but left Collection null

Same old story, bah!!!

Apps like shareaza must have a go at this, and the source is available!
Running shareaza, viewing log..



[23:45:14] Windows Firewall setup for UPnP succeeded.
[23:45:14] Trying to setup port mappings using NAT UPnP...
[23:45:19] Trying to setup port mappings using Control Point UPnP...
[23:45:19] Accepting incoming TCP connections on 0.0.0.0 port 0.
[23:45:19] Listening for UDP datagrams on 0.0.0.0 port 0.
[23:45:19] Found UPnP device: WANConnectionDevice (ChildLevel: 0, UID: uuid:ab5d9077-0710-4373-a4ea-5192c8781666)
[23:45:29] Traversing the service list of UPnP device failed.


Well that's looking like a non-starter.

Maybe my trusty old netgear DG834G router is only partially UPnP compatible?