Index: /trunk/MFCtooling/replay/LogParser.cpp
===================================================================
--- /trunk/MFCtooling/replay/LogParser.cpp	(revision 103)
+++ /trunk/MFCtooling/replay/LogParser.cpp	(revision 104)
@@ -6,5 +6,5 @@
 #include "WindowFinder.h"
 
-LogParser::LogParser(void)
+LogParser::LogParser(_TCHAR* runCommand, unsigned int startupTime, bool useDefaultDelay) : runCommand(runCommand), startupTime(startupTime), useDefaultDelay(useDefaultDelay)
 {
 	
@@ -28,5 +28,18 @@
 	std::wstring localName(pwchLocalName);
 	if( localName.compare(L"session")==0 ) {
-		// TODO
+		std::wstring sessionId = GetAttributeValue(pAttributes, L"id", L"");
+		std::wcout << L"================================================" << std::endl;
+		std::wcout << L"starting session " << sessionId << std::endl;
+		std::wcout << L"executing " << runCommand << std::endl;
+		PROCESS_INFORMATION pi;
+		STARTUPINFO si;
+		ZeroMemory(&pi, sizeof(pi));
+		ZeroMemory(&si, sizeof(si));
+		CreateProcess(NULL, runCommand, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
+		hProcess = pi.hProcess;
+		CloseHandle(pi.hThread);
+		std::wcout << L"waiting " << startupTime << L" ms for application under test to intialize" << std::endl;
+		Sleep(startupTime);
+		std::wcout << L"replay starting..." << std::endl;
 	}
 	else if( localName.compare(L"msg")==0 ) {
@@ -76,5 +89,10 @@
 	std::wstring localName(pwchLocalName);
 	if( localName.compare(L"session")==0 ) {
-		// TODO
+		std::wcout << L"session completed" << std::endl;
+		BOOL retVal = TerminateProcess(hProcess, 0);
+		if( retVal!=0 ) {
+			std::wcout << L"application terminated" << std::endl;
+		}
+		CloseHandle(hProcess);
 	} 
 	else if( localName.compare(L"msg")==0 ) {
@@ -129,7 +147,10 @@
 
 void LogParser::sendMessage(HWND hwnd) {
-	std::wcout << L"Sending " << msgType << L" to " << hwnd << "L - LPARAM: " << lParam << L" - WPARAM: " << wParam << std::endl;
+	std::wcout << L"  Sending " << msgType << L" to " << hwnd << "L - LPARAM: " << lParam << L" - WPARAM: " << wParam << std::endl;
 	PostMessage(hwnd, msgType, wParam, lParam);
-	Sleep(defaultMsgDelay);
-	//Sleep(delay);
+	if( useDefaultDelay ) {
+		Sleep(defaultMsgDelay);
+	} else {
+		Sleep(delay);
+	}
 }
Index: /trunk/MFCtooling/replay/LogParser.h
===================================================================
--- /trunk/MFCtooling/replay/LogParser.h	(revision 103)
+++ /trunk/MFCtooling/replay/LogParser.h	(revision 104)
@@ -17,10 +17,15 @@
 	WPARAM wParam;
 
+	boolean useDefaultDelay;
 	int delay;
 
 	void sendMessage(HWND hwnd);
 
+	_TCHAR * runCommand;
+	unsigned int startupTime;
+	HANDLE hProcess;
+
 public:
-	LogParser(void);
+	LogParser(_TCHAR * runCommand, unsigned int startupChar, bool useDefaultDelay = false);
 	~LogParser(void);
 
Index: /trunk/MFCtooling/replay/replay.cpp
===================================================================
--- /trunk/MFCtooling/replay/replay.cpp	(revision 103)
+++ /trunk/MFCtooling/replay/replay.cpp	(revision 104)
@@ -10,12 +10,12 @@
 int _tmain(int argc, _TCHAR* argv[])
 {
-	if (argc<2) 
+	if (argc<3) 
 	{
-		wprintf(L"no argument provided\n");
+		std::wcout << "Usage: " << argv[0] << "<replayfile> <applicationundertest>" << std::endl;
 		return 0;
 	}
 
 	// execute application to be replayed
-	if (argc>2) {
+	/*if (argc>2) {
 		std::wcout << "executing " << argv[2] << std::endl;
 		PROCESS_INFORMATION pi;
@@ -25,5 +25,5 @@
 		CreateProcess(NULL, argv[2], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
 		Sleep(10000);
-	}
+	}*/
 
 
@@ -41,14 +41,16 @@
 
 	if( !FAILED(hr) ) {
-		LogParser * parser = new LogParser();
+		std::wcout << L"replaying sessions in " << argv[1] << std::endl;
+		LogParser * parser = new LogParser(argv[2], 5000, true);
 		pXMLReader->putContentHandler(parser);
 		hr = pXMLReader->parseURL(argv[1]);
-
 		pXMLReader->Release();
+		std::wcout << L"================================================" << std::endl;
+		std::wcout << L"replay completed" << std::endl;
 	}
 
 	CoUninitialize();
 
-	std::wcout << "Press enter to exit ...";
+	std::wcout << L"press enter to exit ...";
 	getchar();
 
