Please upgrade your browser for the best possible experience.

Chrome Firefox Internet Explorer
×

Why Steam Overlay and SWTOR don't work, and how to fix it

STAR WARS: The Old Republic > English > Customer Service
Why Steam Overlay and SWTOR don't work, and how to fix it

Like_whoa's Avatar


Like_whoa
04.04.2012 , 11:37 PM | #11
Yeah, still can't get the do an Overlay much less show my Friends i'm playing it.

Antijovial's Avatar


Antijovial
04.24.2012 , 03:29 PM | #12
Four months and still no fix. Excellent job, Bioware/Steam!
Nevermore

TriKar's Avatar


TriKar
05.28.2012 , 04:01 PM | #13
This would open up some good gaming experiences. Please tell me ToR developers are working on this.
I understand ToR wasn't offered on Steam and could take years like Star Wars Galaxies to get added to the list. Clearly ToR made an offer to Steam which Steam declined. Probably been going on since the first meeting held by the Staff of EA and Bioware concerning ToR.

ChrisYou's Avatar


ChrisYou
08.06.2012 , 11:00 PM | #14
They'll fix it when it goes F2P and add it as a bonus feature you have to pay for. #thisgameisdone

Mircel's Avatar


Mircel
12.04.2012 , 07:20 AM | #15
The latest Steam update says it fixes this:
...
- Fix the in-game overlay to correctly inject when a launcher calls ShellExecute with an empty string for the verb (Windows, fixes SWTOR)
...

But it's not fixed here even with that update - it shows I'm playing for a few seconds it takes to start launcher.

*edit:
I guess the reason was administrative rights; I forced SW:TOR to run as normal user and it works fine with Steam now.

Balnazaar's Avatar


Balnazaar
12.13.2012 , 12:33 PM | #16
I really hate this. I just stopped using XP, and I could use the Steam Overlay without having to even care about fixing it, it worked the moment I launced SWTOR via Steam. Now, in Win7, launcher goes off. *in non-steam game SWTOR*.
When I click play, it just reverts to just showing my name, and it looks like I just quit SWTOR. Really annoying.

SneakeySith's Avatar


SneakeySith
01.07.2014 , 03:58 AM | #17
Quote: Originally Posted by renegadelink View Post
So I've done some digging at why SWTOR and the steam overlay do not work together. The swtor mods didn't like my previous workaround so I figured I would help and explain what is wrong and how to fix it.

The steam overlay hooks SWTOR's launcher just fine. The problem comes right before the launcher starts SWTOR's client. The steam overlay is expecting the 'verb' argument to the windows api SHELL32 function ShellExecuteExW(http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx), to be the unicode string, "open". However, SWTOR's launcher uses an empty string, "", which gets defaulted to open. Since an empty string does not equal "open", the steam overlay exits out and does not hook into SWTOR's client.

I've tested editing memory making the empty string equal, open, and the steam overlay works just fine. Steam also has to be running in admin mode unfortunately because the launcher needs to escalate to admin.

To fix the steam overlay one of two things can happen. Valve can put in a check for the empty string, and if that means open is the default, then continue business as usual. Or Bioware can change how they start the client giving the ShellExecuteExW, the parameter verb as "open".

I've written a very small program showing how SWTOR's launcher is starting the client. I added a comment on what needs to change to fix. This may also be a problem with other games with a launcher not working with steam overlay.

Code:
#include <windows.h>
#include <stdio.h>
#include <conio.h>

int main()
{
	// Steam Overlay is expecting lpVerb to equal "open", but since lpVerb is an empty string, the Steam Overlay exits out
	// So for the Steam Overlay to work, the next line must read:
	// LPCWSTR lpVerb = L"open";
	LPCWSTR lpVerb = L"";

	LPCWSTR lpFile = L"C:\\Program Files (x86)\\Electronic Arts\\BioWare\\Star Wars - The Old Republic\\swtor\\retailclient\\swtor.exe";
	LPCWSTR lpParameters = L"-set username ...";
	LPCWSTR lpDirectory = L"C:\\Program Files (x86)\\Electronic Arts\\BioWare\\Star Wars - The Old Republic\\swtor\\retailclient";
	LPCWSTR lpClass = L"";

	SHELLEXECUTEINFOW exec;
	exec.cbSize = sizeof(exec);
	exec.fMask = SEE_MASK_NOCLOSEPROCESS | SEE_MASK_FLAG_NO_UI;
	exec.hwnd = NULL;
	exec.lpVerb = lpVerb;
	exec.lpFile = lpFile;
	exec.lpParameters = lpParameters;
	exec.lpDirectory = lpDirectory;
	exec.nShow = SW_SCROLLCHILDREN;
	exec.hInstApp = NULL;
	exec.lpIDList = NULL;
	exec.lpClass = lpClass;
	exec.hkeyClass = NULL;
	exec.dwHotKey = 0;
	exec.hIcon = NULL;
	exec.hProcess = NULL;

	BOOL successful = ShellExecuteExW(&exec);
	if(successful)
		printf("Execute Succeeded.\n");
	else
		printf("Execute Failed.\n");

	printf("Press any key to exit...");
	_getch();
	return 0;
}
I've posted in the steam forums too.
http://forums.steampowered.com/forum...php?p=28585762

Be sure to comment to keep the thread visible enough for mods/devs to see!
I don't understand. How do you use this code to fix it? I need detailed step by step instructions.
Quote:
Peace is a lie, there is only passion. Through passion, I gain strength. Through strength, I gain power. Through power, I gain victory. Through victory, my chains are broken. The Force will free me.

SneakeySith's Avatar


SneakeySith
01.07.2014 , 04:16 AM | #18
Quote: Originally Posted by renegadelink View Post
So I've done some digging at why SWTOR and the steam overlay do not work together. The swtor mods didn't like my previous workaround so I figured I would help and explain what is wrong and how to fix it.

The steam overlay hooks SWTOR's launcher just fine. The problem comes right before the launcher starts SWTOR's client. The steam overlay is expecting the 'verb' argument to the windows api SHELL32 function ShellExecuteExW(http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx), to be the unicode string, "open". However, SWTOR's launcher uses an empty string, "", which gets defaulted to open. Since an empty string does not equal "open", the steam overlay exits out and does not hook into SWTOR's client.

I've tested editing memory making the empty string equal, open, and the steam overlay works just fine. Steam also has to be running in admin mode unfortunately because the launcher needs to escalate to admin.

To fix the steam overlay one of two things can happen. Valve can put in a check for the empty string, and if that means open is the default, then continue business as usual. Or Bioware can change how they start the client giving the ShellExecuteExW, the parameter verb as "open".

I've written a very small program showing how SWTOR's launcher is starting the client. I added a comment on what needs to change to fix. This may also be a problem with other games with a launcher not working with steam overlay.

Code:
#include <windows.h>
#include <stdio.h>
#include <conio.h>

int main()
{
	// Steam Overlay is expecting lpVerb to equal "open", but since lpVerb is an empty string, the Steam Overlay exits out
	// So for the Steam Overlay to work, the next line must read:
	// LPCWSTR lpVerb = L"open";
	LPCWSTR lpVerb = L"";

	LPCWSTR lpFile = L"C:\\Program Files (x86)\\Electronic Arts\\BioWare\\Star Wars - The Old Republic\\swtor\\retailclient\\swtor.exe";
	LPCWSTR lpParameters = L"-set username ...";
	LPCWSTR lpDirectory = L"C:\\Program Files (x86)\\Electronic Arts\\BioWare\\Star Wars - The Old Republic\\swtor\\retailclient";
	LPCWSTR lpClass = L"";

	SHELLEXECUTEINFOW exec;
	exec.cbSize = sizeof(exec);
	exec.fMask = SEE_MASK_NOCLOSEPROCESS | SEE_MASK_FLAG_NO_UI;
	exec.hwnd = NULL;
	exec.lpVerb = lpVerb;
	exec.lpFile = lpFile;
	exec.lpParameters = lpParameters;
	exec.lpDirectory = lpDirectory;
	exec.nShow = SW_SCROLLCHILDREN;
	exec.hInstApp = NULL;
	exec.lpIDList = NULL;
	exec.lpClass = lpClass;
	exec.hkeyClass = NULL;
	exec.dwHotKey = 0;
	exec.hIcon = NULL;
	exec.hProcess = NULL;

	BOOL successful = ShellExecuteExW(&exec);
	if(successful)
		printf("Execute Succeeded.\n");
	else
		printf("Execute Failed.\n");

	printf("Press any key to exit...");
	_getch();
	return 0;
}
I've posted in the steam forums too.
http://forums.steampowered.com/forum...php?p=28585762

Be sure to comment to keep the thread visible enough for mods/devs to see!
Please! Tell me how to use this to make it work. It's just a bunch of meaningless lines of code that I don't know which parts to copy and past or where to put it.
Quote:
Peace is a lie, there is only passion. Through passion, I gain strength. Through strength, I gain power. Through power, I gain victory. Through victory, my chains are broken. The Force will free me.