La cosa es que estoy preparando el codigo para injectarlo y necesito hacer las llamadas a la api.
Estoy lellendo y lellendo y nada. no doy pies con bola.
Código [Seleccionar]
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#pragma once
// Modify the following defines if you have to target a platform prior to the ones specified below.
// Refer to MSDN for the latest info on corresponding values for different platforms.
#ifndef WINVER // Allow use of features specific to Windows XP or later.
#define WINVER 0x0501 // Change this to the appropriate value to target other versions of Windows.
#endif
#ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later.
#define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows.
#endif
#ifndef _WIN32_WINDOWS // Allow use of features specific to Windows 98 or later.
#define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later.
#endif
#ifndef _WIN32_IE // Allow use of features specific to IE 6.0 or later.
#define _WIN32_IE 0x0600 // Change this to the appropriate value to target other versions of IE.
#endif
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
// Windows Header Files:
#include <windows.h>
// C RunTime Header Files
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>
// Disable some useless warnings
#pragma warning(disable: 4996) // declared deprecated
#pragma warning(disable: 4311) // pointer truncation
#pragma warning(disable: 4312) // conversion problems
#pragma warning(disable: 4748) // optimization disabled
#pragma unmanaged
#pragma runtime_checks( "", off )
// TODO: reference additional headers your program requires here
#include <cstdio>
#include "windef.h"
typedef struct SHELLEXECUTEINFO {
DWORD cbSize;
ULONG fMask;
HWND hwnd;
LPCTSTR lpVerb;
LPCTSTR lpFile;
LPCTSTR lpParameters;
LPCTSTR lpDirectory;
int nShow;
HINSTANCE hInstApp;
LPVOID lpIDList;
LPCTSTR lpClass;
HKEY hkeyClass;
DWORD dwHotKey;
union {
HANDLE hIcon;
HANDLE hMonitor;
} DUMMYUNIONNAME;
HANDLE hProcess;
} SHELLEXECUTEINFO, *LPSHELLEXECUTEINFO;
BOOL ShellExecuteEx(
_Inout_ SHELLEXECUTEINFO *pExecInfo
);
int _tmain(int argc, _TCHAR* argv[])
{
// split the program name into two chunks by :
ULONG SEE_MASK_CLASSNAME = (0x00000001);
char* p = strtok((char*)argv[0], ":");
char drive[3] = { "d:" };
sprintf(drive, "%s:", p); // Create and clear out the shellexecuteinfo
SHELLEXECUTEINFO ShExecInfo;
memset(&ShExecInfo, 0, sizeof(SHELLEXECUTEINFO)); // Set all the parameters
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_CLASSNAME;
ShExecInfo.lpClass = _T("AudioCD");
ShExecInfo.lpVerb = _T("play");
ShExecInfo.hwnd = NULL;
ShExecInfo.lpFile = NULL;
ShExecInfo.lpParameters = NULL;
ShExecInfo.lpDirectory = (LPCWSTR)drive; // drive letter
ShExecInfo.nShow = SW_SHOW; // show the app on screen
ShExecInfo.hInstApp = NULL;
BOOL result = ShellExecuteEx(&ShExecInfo);
if (!result)
{
DWORD error = GetLastError();
return error;
}
return 0;
}