|
|
|||||||||
|
|||||||||
|
|||||||||
| |
||
| |||||||||
![]() |
|
|
«
Previous Thread
|
Next Thread
»
|
Thread Tools | Search this Thread | Rate Thread | Display Modes |
|
#1
|
|||
|
|||
|
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 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_V M_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, (WPARAM)0, (LPARAM)_lvi);
VirtualFreeEx(process, _lvi, 0, MEM_RELEASE);
}
::CloseHandle(process);
|
|
#2
|
|||
|
|||
|
Hi,
I should point out I haven't used visual studo 6, so I am giving a general concept of what you should do, you might have to find the correct syntax. Sorry! For the first part: Declare a variable of type string, something like... string txtValue; and set it equal to the text in the textbox. if your textbox is name txt1, it should look like... txtValue = txt1.Text; or txtValue = txt1.Value; (again, not sure about syntax) then call your function using this variable... pos=GetPosByNick(txtValue); I am not completely sure about the second part, but you should be able to just do ... (WPARAM)pos let me know if any of this is helpful! sincerely, kriti |
![]() |
| Viewing: ASP Free Forums > Other > Programming Help > Help calling and using a functions in visual c++ 6 |
| Thread Tools | Search this Thread |
| Display Modes | Rate This Thread |
|
|
|
|