Thread: Help calling and using a functions

  1. #1
    Registered User
    Join Date
    Jul 2006
    Posts
    4

    Cool Help calling and using a functions in visual c++ 6

    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_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, (WPARAM)0, (LPARAM)_lvi); 
       VirtualFreeEx(process, _lvi, 0, MEM_RELEASE); 
       } 
     ::CloseHandle(process);
    Last edited by method; 07-08-2006 at 04:17 PM.

Popular pages Recent additions subscribe to a feed