How to compile this for 64 bit?

Hi, how to compile this (www.codeproject.com/Articles/11781/KillTT-No-More-Tooltips) for 64 bit Windows (32 bit version doesnt kill tooltips in 64 bit applications) if I dont know almost nothing about programming? Could someone write me step by step instruction how to use Visual Studio or anything other to compile this please?
Last edited on
download the source and post it so people can look at it properly
killtt.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
#include "Windows.h"
#include "Shellapi.h"
#include "commctrl.h"

#ifdef _DEBUG
extern "C" __declspec(naked) void _chkesp()
{
	__asm je return0
	__asm int 3
return0:
	__asm ret
}
#endif

#define SHOW_TRAY_ICON

void _declspec(dllimport) KillTT_Hook();
void _declspec(dllimport) KillTT_SetBlock(BOOL bBlock);
void _declspec(dllimport) KillTT_Unhook();

HWND wndNotify;
NOTIFYICONDATA nidIconData;
HICON icoEnabledIcon;
HICON icoDisabledIcon;
HMENU mnuPopup;
bool blnEnabled=TRUE;
const UINT WM_TASKBARCREATED = ::RegisterWindowMessage("TaskbarCreated");


BOOL CALLBACK KillTT_EnableTooltips(HWND hwnd,LPARAM lParam)
{
	CHAR buf[256];
	GetClassName(hwnd,buf,256);
	if(lstrcmp(buf,TEXT("tooltips_class32"))==0)
	{
		PostMessage(hwnd,TTM_ACTIVATE,lParam,0);
	}
	EnumChildWindows(hwnd,&KillTT_EnableTooltips,lParam);
	return TRUE;
}

void KillTT_SetState(bool kill)
{
#ifdef SHOW_TRAY_ICON
	MENUITEMINFO mii;
	mii.cbSize=sizeof(mii);
	mii.fMask=MIIM_STATE;
#endif
	KillTT_SetBlock(kill);
	if(kill)
	{
		EnumWindows(&KillTT_EnableTooltips,0);
#ifdef SHOW_TRAY_ICON
		nidIconData.hIcon=icoEnabledIcon;
		mii.fState=MFS_CHECKED|MFS_ENABLED;
#endif
	}
	else
	{
		EnumWindows(&KillTT_EnableTooltips,1);
#ifdef SHOW_TRAY_ICON
		nidIconData.hIcon=icoDisabledIcon;
		mii.fState=MFS_UNCHECKED|MFS_ENABLED;
#endif
	}
#ifdef SHOW_TRAY_ICON
	SetMenuItemInfo(mnuPopup,100,FALSE,&mii);
	Shell_NotifyIcon(NIM_MODIFY,&nidIconData);
#endif
}

#ifdef SHOW_TRAY_ICON
void CreateTrayIcon()
{
	nidIconData.cbSize=sizeof(nidIconData);
	nidIconData.hWnd=wndNotify;
	nidIconData.uID=0;
	nidIconData.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP;
	nidIconData.uCallbackMessage=WM_USER+11;
	nidIconData.hIcon=icoEnabledIcon;
	nidIconData.szTip[0]=NULL;

	Shell_NotifyIcon(NIM_ADD,&nidIconData);
}


LRESULT CALLBACK KillTT_WndProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
	if(uMsg==WM_USER+11)
	{
		if(lParam==WM_LBUTTONUP)
		{
			blnEnabled=!blnEnabled;
			KillTT_SetState(blnEnabled);
		}
		if(lParam==WM_RBUTTONUP ||  lParam == WM_CONTEXTMENU)
		{
			POINT popupPt;
			GetCursorPos(&popupPt);
			SetForegroundWindow(wndNotify);
			UINT item=TrackPopupMenu(mnuPopup,
				TPM_NONOTIFY|TPM_RETURNCMD|TPM_LEFTALIGN|
				TPM_BOTTOMALIGN,popupPt.x,popupPt.y,0,
				wndNotify,NULL);
			PostMessage(wndNotify,WM_NULL,0,0);
			switch(item)
			{
			case 100:
				blnEnabled=!blnEnabled;
				KillTT_SetState(blnEnabled);
				break;
			case 101:
				PostQuitMessage(0);
				break;
			default:
				break;
			}
		}
		if(uMsg == WM_TASKBARCREATED)
		{
			CreateTrayIcon();
		}
	}
	return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
#endif

extern "C" BOOL WINAPI WinMainCRTStartup()
{
	KillTT_Hook();

#ifdef SHOW_TRAY_ICON
	HINSTANCE hInst=GetModuleHandle(NULL);
	icoDisabledIcon=(HICON)LoadImage(hInst,MAKEINTRESOURCE(1001),
		IMAGE_ICON,0,0,LR_DEFAULTSIZE|LR_SHARED);
	icoEnabledIcon=(HICON)LoadImage(hInst,MAKEINTRESOURCE(1000),
		IMAGE_ICON,0,0,LR_DEFAULTSIZE|LR_SHARED);
	mnuPopup=LoadMenu(hInst,MAKEINTRESOURCE(1002));

	MENUITEMINFO mii;
	mii.cbSize=sizeof(mii);
	mii.fMask=MIIM_SUBMENU;
	GetMenuItemInfo(mnuPopup,0,TRUE,&mii);
	mnuPopup=mii.hSubMenu;

	wndNotify=CreateWindow("EDIT","ttkiller_notification_window",
		0,0,0,1,1,NULL,NULL,hInst,0);
	SetWindowLong(wndNotify,GWL_WNDPROC,(LONG)&KillTT_WndProc);

	CreateTrayIcon();
#endif

	KillTT_SetState(blnEnabled);

	MSG msg;
	BOOL bRet;
	
	while((bRet=GetMessage(&msg,NULL,0,0))!=0)
	{ 
		if(bRet==-1)
		{
			break;
		}
		else
		{
			TranslateMessage(&msg); 
			DispatchMessage(&msg); 
		}
	}
	KillTT_SetState(FALSE);
	KillTT_Unhook();
#ifdef SHOW_TRAY_ICON
	Shell_NotifyIcon(NIM_DELETE,&nidIconData);
#endif
	return 0;
}


killtt.dsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# Microsoft Developer Studio Project File - Name="killtt" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **

# TARGTYPE "Win32 (x86) Application" 0x0101

CFG=killtt - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE 
!MESSAGE NMAKE /f "killtt.mak".
!MESSAGE 
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE 
!MESSAGE NMAKE /f "killtt.mak" CFG="killtt - Win32 Debug"
!MESSAGE 
!MESSAGE Possible choices for configuration are:
!MESSAGE 
!MESSAGE "killtt - Win32 Release" (based on "Win32 (x86) Application")
!MESSAGE "killtt - Win32 Debug" (based on "Win32 (x86) Application")
!MESSAGE 

# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
MTL=midl.exe
RSC=rc.exe

!IF  "$(CFG)" == "killtt - Win32 Release"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"stdafx.h" /FD /c
# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /FD /c
# SUBTRACT CPP /YX /Yc /Yu
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
# ADD LINK32 killtt_helper/release/killtt_helper.lib kernel32.lib user32.lib shell32.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib
# SUBTRACT LINK32 /pdb:none

!ELSEIF  "$(CFG)" == "killtt - Win32 Debug"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /FD /GZ /c
# SUBTRACT CPP /YX /Yc /Yu
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
# ADD LINK32 killtt_helper/debug/killtt_helper.lib kernel32.lib user32.lib shell32.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib /pdbtype:sept
# SUBTRACT LINK32 /pdb:none

!ENDIF 

# Begin Target

# Name "killtt - Win32 Release"
# Name "killtt - Win32 Debug"
# Begin Group "Source Files"

# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File

SOURCE=.\killtt.cpp
# End Source File
# Begin Source File

SOURCE=.\res.rc
# End Source File
# End Group
# Begin Group "Resource Files"

# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# Begin Source File

SOURCE=.\disabled.ico
# End Source File
# Begin Source File

SOURCE=.\enabled.ico
# End Source File
# End Group
# End Target
# End Project 

killtt.dsw
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!

###############################################################################

Project: "Self_delete"=".\Self_delete\Self_delete.dsp" - Package Owner=<4>

Package=<5>
{{{
}}}

Package=<4>
{{{
}}}

###############################################################################

Project: "installer"=".\installer\installer.dsp" - Package Owner=<4>

Package=<5>
{{{
}}}

Package=<4>
{{{
}}}

###############################################################################

Project: "killtt"=".\killtt.dsp" - Package Owner=<4>

Package=<5>
{{{
}}}

Package=<4>
{{{
    Begin Project Dependency
    Project_Dep_Name killtt_helper
    End Project Dependency
}}}

###############################################################################

Project: "killtt_helper"=".\killtt_helper\killtt_helper.dsp" - Package Owner=<4>

Package=<5>
{{{
}}}

Package=<4>
{{{
}}}

###############################################################################

Global:

Package=<5>
{{{
}}}

Package=<3>
{{{
}}}

###############################################################################


res.rc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
//Microsoft Developer Studio generated resource script.
//
#include "resource.h"

#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"

/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32

#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE DISCARDABLE 
BEGIN
    "resource.h\0"
END

2 TEXTINCLUDE DISCARDABLE 
BEGIN
    "#include ""afxres.h""\r\n"
    "\0"
END

3 TEXTINCLUDE DISCARDABLE 
BEGIN
    "\r\n"
    "\0"
END

#endif    // APSTUDIO_INVOKED


/////////////////////////////////////////////////////////////////////////////
//
// Icon
//

// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
1000                    ICON    DISCARDABLE     "disabled.ico"
1001                    ICON    DISCARDABLE     "enabled.ico"

/////////////////////////////////////////////////////////////////////////////
//
// Menu
//

1002 MENU DISCARDABLE 
BEGIN
    POPUP "Popup"
    BEGIN
        MENUITEM "&Disable tooltips",           100
        MENUITEM "&Quit",                       101
    END
END

#endif    // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////



#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//


/////////////////////////////////////////////////////////////////////////////
#endif    // not APSTUDIO_INVOKED


resource.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by res.rc
//
#define IDM_DISABLETOOLTIPS             40002
#define IDM_QUIT                        40003

// Next default values for new objects
// 
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        104
#define _APS_NEXT_COMMAND_VALUE         40004
#define _APS_NEXT_CONTROL_VALUE         1000
#define _APS_NEXT_SYMED_VALUE           101
#endif
#endif 


Self_Delete.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
// Self_delete.cpp : Defines the entry point for the DLL application.
//

#include <windows.h>
HMODULE g_hmodDLL;

#ifdef _DEBUG
// Stupid MSVC++ function in the CRT,
// which I'm not using
extern "C" __declspec(naked) void _chkesp()
{
	__asm je return0
	__asm nop
return0:
	__asm ret
}
#endif

extern "C" BOOL WINAPI _DllMainCRTStartup(HINSTANCE hinstDLL, DWORD reason, LPVOID)
{
    if (reason == DLL_PROCESS_ATTACH)
        g_hmodDLL = hinstDLL;

    return TRUE;
}

extern "C" __declspec(dllexport) void CALLBACK MagicDel(HWND,
                                                        HINSTANCE,
                                                        LPTSTR lpCmdLine,
                                                        int)
{
    // Delete the executable file that created this process
	while(*lpCmdLine  &&  *lpCmdLine == ' ') lpCmdLine++;
	if(*lpCmdLine == '"')
		lpCmdLine++;

	LPTSTR lpCmdLineEnd = lpCmdLine + lstrlen(lpCmdLine) - 1;
	while(lpCmdLineEnd > lpCmdLine  &&  *lpCmdLineEnd == ' ') lpCmdLineEnd--;

	if(*lpCmdLineEnd == '"')
		*lpCmdLineEnd = 0;
	else
		*(lpCmdLineEnd + 1) = 0;

    Sleep(2000);
	while(GetFileAttributes(lpCmdLine) != 0xffffffff)
	{
		DeleteFile(lpCmdLine);
	    Sleep(100);
	}

	CHAR cBuffer[MAX_PATH];

	lstrcpy(cBuffer, lpCmdLine);
	for(int i = lstrlen(cBuffer);  i >= 0;  i--)
	{
		if(cBuffer[i] == '\\')
		{
			cBuffer[i] = 0;
			break;
		}
	}

	RemoveDirectory(cBuffer);

    // Delete ourself
    GetModuleFileName(g_hmodDLL, cBuffer, sizeof(cBuffer));

    __asm
    {
        lea     eax, cBuffer
        push    0
        push    0
        push    eax
        push    ExitProcess
        push    g_hmodDLL
        push    DeleteFile
        push    FreeLibrary
        ret
    }
}


Self_delete.dsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# Microsoft Developer Studio Project File - Name="Self_delete" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **

# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102

CFG=Self_delete - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE 
!MESSAGE NMAKE /f "Self_delete.mak".
!MESSAGE 
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE 
!MESSAGE NMAKE /f "Self_delete.mak" CFG="Self_delete - Win32 Debug"
!MESSAGE 
!MESSAGE Possible choices for configuration are:
!MESSAGE 
!MESSAGE "Self_delete - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "Self_delete - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE 

# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
MTL=midl.exe
RSC=rc.exe

!IF  "$(CFG)" == "Self_delete - Win32 Release"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SELF_DELETE_EXPORTS" /Yu"stdafx.h" /FD /c
# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SELF_DELETE_EXPORTS" /FD /c
# SUBTRACT CPP /YX /Yc /Yu
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
# ADD LINK32 kernel32.lib user32.lib /nologo /dll /machine:I386 /nodefaultlib
# SUBTRACT LINK32 /pdb:none

!ELSEIF  "$(CFG)" == "Self_delete - Win32 Debug"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SELF_DELETE_EXPORTS" /Yu"stdafx.h" /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SELF_DELETE_EXPORTS" /FD /GZ /c
# SUBTRACT CPP /YX /Yc /Yu
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib /nologo /dll /incremental:no /debug /machine:I386 /nodefaultlib /pdbtype:sept
# SUBTRACT LINK32 /pdb:none

!ENDIF 

# Begin Target

# Name "Self_delete - Win32 Release"
# Name "Self_delete - Win32 Debug"
# Begin Group "Source Files"

# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File

SOURCE=.\Self_delete.cpp
# End Source File
# End Group
# End Target
# End Project 


ttproc.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#pragma pack(push, 1)

class TooltipKiller
{
public:
	TooltipKiller(BOOL* bGlobalFlag, BOOL* bLocalFlag)
	{
		m_nCodeBytesn2 = (unsigned short)0xB855;
		m_nCodeBytesn1 = 0x74003883;
		m_nCodeBytes0 = (unsigned short)0xB87C;
		m_nCodeBytes1[0] = 0x7400F883;
		m_nCodeBytes1[1] = 0x8BEC8B72;

		m_nCodeBytes1[2] = 0x223D0C45;
		m_nCodeBytes1[3] = 0x74000004;
		m_nCodeBytes1[4] = 0x04113D75;
		m_nCodeBytes1[5] = 0x6E740000;
		m_nCodeBytes1[6] = 0x0004123D;
		m_nCodeBytes1[7] = 0x3D677400;
		m_nCodeBytes1[8] = 0x00000407;
		m_nCodeBytes1[9] = 0x013D6074;
		m_nCodeBytes1[10] = 0x74000004;
		m_nCodeBytes1[11] = 0x00823D59;
		m_nCodeBytes1[12] = 0x43750000;
		m_nCodeBytes1[13] = 0x8918C583;
		m_nCodeBytes1[14] = 0x458BE445;
		m_nCodeBytes1[15] = 0xE04589F0;
		m_CodeBytes2 = (unsigned short)0x45C7;
		m_CodeBytes3 = (char)0xDC;
		m_nCodeBytes4[0] = 0x89E8458B;
		m_nCodeBytes4[1] = 0x458BD845;
		m_nCodeBytes4[2] = 0xE84589F8;
		m_nCodeBytes4[3] = 0x89EC458B;
		m_nCodeBytes4[4] = 0x458BF045;
		m_nCodeBytes4[5] = 0xEC4589FC;
		m_CodeBytes5 = (unsigned short)0x45C7;
		m_CodeBytes6 = (char)0xF4;
		m_nCodeBytes7[0] = 0x00F845C7;
		m_nCodeBytes7[1] = 0xC7000000;
		m_CodeBytes8 = (unsigned short)0xFC45;
		m_nCodeBytes9 = 0x5D10EC83;
		m_CodeBytes10 = (unsigned short)0x6858;
		m_CodeBytes11 = (unsigned short)0xB850;
		m_nCodeBytes12[0] = 0xC033E0FF;
		m_nCodeBytes12[1] = 0x0010C25D;
		
		HMODULE hmModule;

		hmModule = LoadLibrary("Kernel32.dll");
		m_pHeapFree = (unsigned int)GetProcAddress(hmModule, "HeapFree");
		hmModule = LoadLibrary("User32.dll");
		m_pCallWndProc = (unsigned int)GetProcAddress(hmModule, "CallWindowProcA");

		m_pHeap = (unsigned int)GetProcessHeap();
		m_pThis = (unsigned int)this;
		m_pOldWndProc = NULL;

		m_pLocalFlag = (unsigned int)bLocalFlag;
		m_pGlobalFlag = (unsigned int)bGlobalFlag;

		FlushInstructionCache(GetCurrentProcess(), this, sizeof(*this));
	}

	WNDPROC GetWindowProc()
	{
		return (WNDPROC)this;
	}

	void SetOldWindowProc(WNDPROC wpProc)
	{
		m_pOldWndProc = (unsigned int)wpProc;
	}

private:
		unsigned short m_nCodeBytesn2;

	unsigned m_pLocalFlag;

		unsigned m_nCodeBytesn1;
		unsigned short m_nCodeBytes0;

	unsigned m_pGlobalFlag;

		unsigned m_nCodeBytes1[16];
		unsigned short m_CodeBytes2;
		char m_CodeBytes3;

	unsigned m_pHeapFree;

		unsigned m_nCodeBytes4[6];
		unsigned short m_CodeBytes5;
		char m_CodeBytes6;

	unsigned m_pHeap;

		unsigned m_nCodeBytes7[2];
		unsigned short m_CodeBytes8;

	unsigned m_pThis;

		unsigned m_nCodeBytes9;
		unsigned short m_CodeBytes10;

	unsigned m_pOldWndProc;

		unsigned short m_CodeBytes11;

	unsigned m_pCallWndProc;

		unsigned m_nCodeBytes12[2];
};

#pragma pack(pop) 


killtt_helper.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include "commctrl.h"
#include "ttproc.h"

///////////////////////////////
//  EXTERNAL DECLARATIONS
///////////////////////////////
inline void *__cdecl operator new(size_t, void *_P) throw()
        {return (_P); }
inline void __cdecl operator delete(void *, void *) throw()
        {return; }

#ifdef _DEBUG
extern "C" __declspec(naked) void _chkesp()
{
	__asm je return0
	__asm int 3
return0:
	__asm ret
}
#endif


///////////////////////////////
//  GLOBAL VARIABLES
///////////////////////////////

#pragma data_seg("SHARED")

HHOOK hHook = NULL;
HINSTANCE hInstance = NULL;
BOOL bBlocking = FALSE;

#pragma data_seg()
#pragma comment(linker,"/SECTION:SHARED,rws")

BOOL* bDLLPresent = NULL;


///////////////////////////////
//  FUNCTION PROTOTYPES
///////////////////////////////

extern "C" BOOL WINAPI _DllMainCRTStartup(HANDLE, DWORD, LPVOID);
LRESULT CALLBACK CBTHook(int nCode, WPARAM wParam, LPARAM lParam);
DWORD WINAPI WaitForUnload(LPVOID lpParameter);

///////////////////////////////
//  ENTRY POINT
///////////////////////////////

extern "C" BOOL WINAPI _DllMainCRTStartup(
                               HANDLE  hDllHandle,
                               DWORD   dwReason,
                               LPVOID  lpreserved
                               )
{
	if(dwReason == DLL_PROCESS_ATTACH)
	{
		if(hInstance == NULL)
			hInstance = (HINSTANCE)hDllHandle;

		bDLLPresent = (BOOL*)
			HeapAlloc(GetProcessHeap(), 0, sizeof(BOOL));
		*bDLLPresent = TRUE;

		DWORD dwThreadID;
		HMODULE hmSelf = LoadLibrary("killtt_helper.dll");
		CreateThread(NULL, 1024, &WaitForUnload, hmSelf, 0, &dwThreadID);
	}
	if(dwReason == DLL_PROCESS_DETACH)
	{
		*bDLLPresent = FALSE;
	}

    return TRUE;
}

///////////////////////////////
//  INTERNAL FUNCTIONS
///////////////////////////////

LRESULT CALLBACK CBTHook(int nCode, WPARAM wParam, LPARAM lParam)
{
	if(nCode == HCBT_CREATEWND)
	{
		HWND hwnd = (HWND)wParam;
		CHAR buf[256];
		GetClassName(hwnd, buf, 256);
		if(lstrcmp(buf, TEXT("tooltips_class32")) == 0)
		{
			SendMessage(hwnd, TTM_ACTIVATE, 0, 0);

			TooltipKiller* ttkKiller = (TooltipKiller*)
				HeapAlloc(GetProcessHeap(), 0, sizeof(TooltipKiller));

			new (ttkKiller) TooltipKiller(&bBlocking, bDLLPresent);

			ttkKiller->SetOldWindowProc( (WNDPROC)
				SetWindowLong(hwnd, GWL_WNDPROC, (LONG)
				ttkKiller->GetWindowProc()));
		}
	}
	return CallNextHookEx(hHook, nCode, wParam, lParam);
}

DWORD WINAPI WaitForUnload(LPVOID lpParameter)
{
	HANDLE hEvent = CreateEvent(NULL, TRUE, FALSE, "KillTT_DLLUnloadEvent");

	while(WaitForSingleObject(hEvent, INFINITE) != WAIT_OBJECT_0) {}

	CloseHandle(hEvent);

	__asm {
		push 0
		push lpParameter
		push ExitThread
		push FreeLibrary
		ret
	}

	return 0;
}


///////////////////////////////
//  EXTERNAL FUNCTIONS
///////////////////////////////

void _declspec(dllexport) KillTT_Hook()
{
	hHook = SetWindowsHookEx(WH_CBT, &CBTHook, hInstance, 0);
}

void _declspec(dllexport) KillTT_SetBlock(BOOL bBlock)
{
	bBlocking = bBlock;
}

void _declspec(dllexport) KillTT_Unhook()
{
	UnhookWindowsHookEx(hHook);

	HANDLE hEvent = CreateEvent(NULL, TRUE, FALSE, "KillTT_DLLUnloadEvent");
	SetEvent(hEvent);
	CloseHandle(hEvent);
}


killtt_helper.dsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# Microsoft Developer Studio Project File - Name="killtt_helper" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **

# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102

CFG=killtt_helper - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE 
!MESSAGE NMAKE /f "killtt_helper.mak".
!MESSAGE 
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE 
!MESSAGE NMAKE /f "killtt_helper.mak" CFG="killtt_helper - Win32 Debug"
!MESSAGE 
!MESSAGE Possible choices for configuration are:
!MESSAGE 
!MESSAGE "killtt_helper - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "killtt_helper - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE 

# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
MTL=midl.exe
RSC=rc.exe

!IF  "$(CFG)" == "killtt_helper - Win32 Release"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "KILLTT_HELPER_EXPORTS" /Yu"stdafx.h" /FD /c
# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "KILLTT_HELPER_EXPORTS" /FD /c
# SUBTRACT CPP /YX /Yc /Yu
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
# ADD LINK32 kernel32.lib user32.lib shell32.lib /nologo /dll /machine:I386 /nodefaultlib
# SUBTRACT LINK32 /pdb:none
# Begin Special Build Tool
SOURCE="$(InputPath)"
PostBuild_Cmds=copy release\killtt_helper.dll ..\release
# End Special Build Tool

!ELSEIF  "$(CFG)" == "killtt_helper - Win32 Debug"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "KILLTT_HELPER_EXPORTS" /Yu"stdafx.h" /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "KILLTT_HELPER_EXPORTS" /FD /GZ /c
# SUBTRACT CPP /YX /Yc /Yu
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib shell32.lib /nologo /dll /debug /machine:I386 /nodefaultlib /pdbtype:sept
# SUBTRACT LINK32 /pdb:none
# Begin Special Build Tool
SOURCE="$(InputPath)"
PostBuild_Cmds=copy debug\killtt_helper.dll ..\debug
# End Special Build Tool

!ENDIF 

# Begin Target

# Name "killtt_helper - Win32 Release"
# Name "killtt_helper - Win32 Debug"
# Begin Group "Source Files"

# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File

SOURCE=.\killtt_helper.cpp
# End Source File
# Begin Source File

SOURCE=.\ttproc.h
# End Source File
# End Group
# End Target
# End Project 


ttproc.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
	// lParam
	// wParam
	// uMsg
	// hwnd
	// Return Address
	// Old EBP             <-EBP
	__asm {
		push ebp

		mov eax, 0xFFFFFFFF // DllPresent flag
		cmp dword ptr[eax], 0
		je retold
		mov eax, 0x88888888 // Hooking flag
		cmp dword ptr[eax], 0
		je retold

		mov ebp, esp
		mov eax, dword ptr[ebp + 12]

		cmp eax, TTM_POPUP
		je ret0
		cmp eax, TTM_TRACKACTIVATE
		je ret0
		cmp eax, TTM_TRACKPOSITION
		je ret0
		cmp eax, TTM_RELAYEVENT
		je ret0
		cmp eax, TTM_ACTIVATE
		je ret0

		cmp eax, WM_NCDESTROY
		jne retold

// lParam             // thisptr                     4
// wParam             // 0                           8
// uMsg               // GetProcessHeap             12
// hwnd               // Return Address             16
// Return Address     // lParam                     20
// Old EBP            // wParam                     24
                      // uMsg                       28
                      // hwnd                       32
                      // HeapFree                   36
                      // Old EBP                    40

		add ebp, 24

		mov dword ptr[ebp - 28], eax  // Move uMsg

		mov eax, dword ptr[ebp - 16]  // Move hwnd
		mov dword ptr[ebp - 32], eax

		mov dword ptr[ebp - 36], 0xCCCCCCCC // Store HeapFree

		mov eax, dword ptr[ebp - 24] // Move EBP
		mov dword ptr[ebp - 40], eax

		mov eax, dword ptr[ebp - 8] // Move wParam
		mov dword ptr[ebp - 24], eax

		mov eax, dword ptr[ebp - 20] // Move Return Address
		mov dword ptr[ebp - 16], eax

		mov eax, dword ptr[ebp - 4] // Move lParam
		mov dword ptr[ebp - 20], eax

		mov dword ptr[ebp - 12], 0xDDDDDDDD // Store GetProcessHeap
		mov dword ptr[ebp - 8], 0 // Store 0
		mov dword ptr[ebp - 4], 0xEEEEEEEE // Store ThisPtr

		sub esp, 16
retold:
		pop ebp
		pop eax
		push 0xAAAAAAAA    // Old window proc
		push eax
		mov eax, 0xBBBBBBBB  // CallWindowProc
		jmp eax

ret0:
		xor eax, eax
		pop ebp
		ret 16

how to compile application as 64 bit with Visual Studio 6? I found these links : (
http://www.javaxt.com/Tutorials/Visual_Studio/Compiling_64_bit_apps_using_Visual_Studio_6_and_Windows_Platform_SDK
http://www.zabkat.com/blog/26Oct08-x64-development-with-VS6-and-ATL3.htm
) but I always get invalid value "AMD64" error.
Anyone could tell me what these errors mean ?
--------------------Configuration: killtt_helper - Win32 Release AMD64--------------------
Compiling...
cl : Command line warning D9035 : option 'GX' has been deprecated and will be removed in a future release
cl : Command line warning D9036 : use 'EHsc' instead of 'GX'
killtt_helper.cpp
c:\Users\user\Desktop\killtt_src\KillTT_Helper\ttproc.h(49) : error C2664: 'LoadLibraryW' : cannot convert parameter 1 from 'const char [13]' to 'LPCWSTR'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
c:\Users\user\Desktop\killtt_src\KillTT_Helper\ttproc.h(51) : error C2664: 'LoadLibraryW' : cannot convert parameter 1 from 'const char [11]' to 'LPCWSTR'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
C:\Users\user\Desktop\killtt_src\KillTT_Helper\killtt_helper.cpp(69) : error C2664: 'LoadLibraryW' : cannot convert parameter 1 from 'const char [18]' to 'LPCWSTR'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
C:\Users\user\Desktop\killtt_src\KillTT_Helper\killtt_helper.cpp(90) : error C2664: 'GetClassNameW' : cannot convert parameter 2 from 'CHAR [256]' to 'LPWSTR'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
C:\Users\user\Desktop\killtt_src\KillTT_Helper\killtt_helper.cpp(91) : error C2664: 'lstrcmpW' : cannot convert parameter 1 from 'CHAR [256]' to 'LPCWSTR'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
C:\Users\user\Desktop\killtt_src\KillTT_Helper\killtt_helper.cpp(101) : error C2065: 'GWL_WNDPROC' : undeclared identifier
C:\Users\user\Desktop\killtt_src\KillTT_Helper\killtt_helper.cpp(110) : error C2664: 'CreateEventW' : cannot convert parameter 4 from 'const char [22]' to 'LPCWSTR'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
C:\Users\user\Desktop\killtt_src\KillTT_Helper\killtt_helper.cpp(116) : error C4235: nonstandard extension used : '__asm' keyword not supported on this architecture
C:\Users\user\Desktop\killtt_src\KillTT_Helper\killtt_helper.cpp(117) : error C2065: 'push' : undeclared identifier
C:\Users\user\Desktop\killtt_src\KillTT_Helper\killtt_helper.cpp(117) : error C2143: syntax error : missing ';' before 'constant'
C:\Users\user\Desktop\killtt_src\KillTT_Helper\killtt_helper.cpp(118) : error C2146: syntax error : missing ';' before identifier 'push'
C:\Users\user\Desktop\killtt_src\KillTT_Helper\killtt_helper.cpp(119) : error C2146: syntax error : missing ';' before identifier 'lpParameter'
C:\Users\user\Desktop\killtt_src\KillTT_Helper\killtt_helper.cpp(119) : error C2146: syntax error : missing ';' before identifier 'push'
C:\Users\user\Desktop\killtt_src\KillTT_Helper\killtt_helper.cpp(120) : error C2146: syntax error : missing ';' before identifier 'ExitThread'
C:\Users\user\Desktop\killtt_src\KillTT_Helper\killtt_helper.cpp(120) : error C2146: syntax error : missing ';' before identifier 'push'
C:\Users\user\Desktop\killtt_src\KillTT_Helper\killtt_helper.cpp(120) : warning C4551: function call missing argument list
C:\Users\user\Desktop\killtt_src\KillTT_Helper\killtt_helper.cpp(121) : error C2146: syntax error : missing ';' before identifier 'FreeLibrary'
C:\Users\user\Desktop\killtt_src\KillTT_Helper\killtt_helper.cpp(122) : error C2146: syntax error : missing ';' before identifier 'ret'
C:\Users\user\Desktop\killtt_src\KillTT_Helper\killtt_helper.cpp(122) : warning C4551: function call missing argument list
C:\Users\user\Desktop\killtt_src\KillTT_Helper\killtt_helper.cpp(122) : error C2065: 'ret' : undeclared identifier
C:\Users\user\Desktop\killtt_src\KillTT_Helper\killtt_helper.cpp(122) : error C2143: syntax error : missing ';' before '}'
C:\Users\user\Desktop\killtt_src\KillTT_Helper\killtt_helper.cpp(146) : error C2664: 'CreateEventW' : cannot convert parameter 4 from 'const char [22]' to 'LPCWSTR'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Error executing cl.exe.

killtt.exe - 20 error(s), 4 warning(s)
??????????????????????????????????????????
--------------------Configuration: killtt_helper - Win32 Release AMD64--------------------
Compiling...
cl : Command line warning D9035 : option 'GX' has been deprecated and will be removed in a future release
cl : Command line warning D9036 : use 'EHsc' instead of 'GX'
killtt_helper.cpp
Linking...
Creating library killtt_helper___Win32_Release_AMD64/killtt_helper.lib and object killtt_helper___Win32_Release_AMD64/killtt_helper.exp
killtt_helper.obj : error LNK2019: unresolved external symbol __security_cookie referenced in function "__int64 __cdecl CBTHook(int,unsigned __int64,__int64)" (?CBTHook@@YA_JH_K_J@Z)
killtt_helper.obj : error LNK2019: unresolved external symbol __security_check_cookie referenced in function "__int64 __cdecl CBTHook(int,unsigned __int64,__int64)" (?CBTHook@@YA_JH_K_J@Z)
killtt_helper___Win32_Release_AMD64/killtt_helper.dll : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.

killtt.exe - 3 error(s), 2 warning(s)

--------------------Configuration: killtt - Win32 Release AMD64--------------------
Compiling resources...
Compiling...
cl : Command line warning D9002 : ignoring unknown option '/ML'
cl : Command line warning D9035 : option 'GX' has been deprecated and will be removed in a future release
cl : Command line warning D9036 : use 'EHsc' instead of 'GX'
killtt.cpp
Linking...
killtt_helper.lib(killtt_helper.dll) : fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'AMD64'
Error executing link.exe.

killtt.exe - 1 error(s), 5 warning(s)
Last edited on
Topic archived. No new replies allowed.