Hi all i am very new to visual c++ . I am using visual studio 6 . So i might ask some simple questions but since i am new i consider you guys bare with me.
I have the following 2 block of codes and i want to be able to call the first one like this :
int pos=-1;
pos=GetPosByNick("name");
I am making a form with a textbox and a button. On the click of the button i want to take the input and place it instead of name in above function call and get the pos value and then use that in my second block of code instead of zero :
(WPARAM)0
so i be happy if an expert tell me step by step what do i need to do to be able to use these blocks of codes. Where to place them , what do i need to declare. Since it is my first attempt to do a program in visual c++ i be happy if an expert give me step by step instrcutions. Thanks
Second block of code:
I have the following 2 block of codes and i want to be able to call the first one like this :
int pos=-1;
pos=GetPosByNick("name");
I am making a form with a textbox and a button. On the click of the button i want to take the input and place it instead of name in above function call and get the pos value and then use that in my second block of code instead of zero :
(WPARAM)0
so i be happy if an expert tell me step by step what do i need to do to be able to use these blocks of codes. Where to place them , what do i need to declare. Since it is my first attempt to do a program in visual c++ i be happy if an expert give me step by step instrcutions. Thanks
Code:
int GetPosByNick(CString szNick)
{
HWND hList=NULL; // List View identifier
HWND parent,child;
parent=NULL;
child=NULL;
parent = ::FindWindow("My Window Class",NULL);
CString c;
child =::FindWindowEx(parent,0,"WTL_SplitterWindow",NULL);
child =::FindWindowEx(child,0,"WTL_SplitterWindow",NULL);
child =::FindWindowEx(child,0,"WTL_SplitterWindow",NULL);
child =::FindWindowEx(child,0,"ATL:0053C8D0",NULL);
hList=::FindWindowEx(child,0,"SysListView32",NULL);
HWND hwnd=parent;
HWND listview=hList;
int count=(int)::SendMessage(listview, LVM_GETITEMCOUNT, 0, 0);
int i;
LVITEM lvi, *_lvi;
char item[512];
char *_item;
unsigned long pid;
HANDLE process;
GetWindowThreadProcessId(listview, &pid);
process=OpenProcess(PROCESS_VM_OPERATION|PROCESS_VM_READ|PROCESS_VM_WRITE|PROCESS_QUERY_INFORMATION, FALSE, pid);
_lvi=(LVITEM*)VirtualAllocEx(process, NULL, sizeof(LVITEM), MEM_COMMIT, PAGE_READWRITE);
_item=(char*)VirtualAllocEx(process, NULL, 512, MEM_COMMIT, PAGE_READWRITE);
lvi.cchTextMax=512;
for(i=0; i<count; i++) {
lvi.iSubItem=2;
lvi.pszText=_item;
WriteProcessMemory(process, _lvi, &lvi, sizeof(LVITEM), NULL);
::SendMessage(listview, LVM_GETITEMTEXT, (WPARAM)i, (LPARAM)_lvi);
ReadProcessMemory(process, _item, item, 512, NULL);
//ReadProcessMemory(process, _subitem, subitem, 512, NULL);
if(item==szNick)
{
VirtualFreeEx(process, _lvi, 0, MEM_RELEASE);
::CloseHandle(process);
return i;
}
}
VirtualFreeEx(process, _lvi, 0, MEM_RELEASE);
::CloseHandle(process);
return -1;
}
Second block of code:
Code:
HWND listview=NULL; // List View identifier
HWND parent,child;
parent=NULL;
child=NULL;
parent = ::FindWindow("My Window Class",NULL);
child =::FindWindowEx(parent,0,"WTL_SplitterWindow",NULL);
child =::FindWindowEx(child,0,"WTL_SplitterWindow",NULL);
child =::FindWindowEx(child,0,"WTL_SplitterWindow",NULL);
child =::FindWindowEx(child,0,"ATL:0053C8D0",NULL);
listview=::FindWindowEx(child,0,"SysListView32",NULL);
LVITEM lvi, *_lvi;
unsigned long pid;
HANDLE process;
GetWindowThreadProcessId(listview, &pid);
process=OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE, FALSE, pid);
if(process)
{
_lvi=(LVITEM*)VirtualAllocEx(process, NULL, sizeof(LVITEM), MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE);
lvi.mask = LVIF_STATE;
lvi.state =15;
lvi.stateMask = LVIS_SELECTED | LVIS_FOCUSED;
WriteProcessMemory(process, _lvi, &lvi, sizeof(LVITEM), NULL);
::SendMessage(listview, LVM_SETITEMSTATE,[B] (WPARAM)0[/B], (LPARAM)_lvi);
VirtualFreeEx(process, _lvi, 0, MEM_RELEASE);
}
::CloseHandle(process);