XFTP 보조 동기 화 서버 도구 (VC +)

3455 단어 일 하 다각본vc++
업무 수요 로 인해 ftp 도 구 를 통 해 서버 에 파일 을 자주 업로드 합 니 다. 이 작업 은 이미 귀 찮 지만 더 귀 찮 은 것 은 다른 서버 에 동기 화 해 야 한 다 는 것 입 니 다. (물론 수 동 으로 동기 화 할 필요 가 없고 이 번 거 로 움 을 줄 일 필요 가 없습니다) 셸 스 크 립 트 를 써 서 해결 할 수도 있 습 니 다. 그러나 대부분 전단 작업 을 하 는 사람들 은 셸 스 크 립 트 언어 에 익숙 하지 않 습 니 다.접촉 할 기회 도 많 지 않 았 다.그래서 이 부 서 를 위해 특별히 이 도 구 를 써 서 ftp 를 업로드 한 후에 수 동 으로 동기 화 하 는 문 제 를 해결 해 야 합 니 다.
    이제 주요 절 차 를 여러분 과 공유 하고 자신 도 기록 하 겠 습 니 다.
일 을 잘 하려 면 먼저 그 그릇 을 이 롭 게 해 야 한다.
A. 우선, 백 엔 드 서버 소프트웨어 를 업로드 하려 고 합 니 다. 저 는 XFTP 를 선 택 했 습 니 다. 물론 다른 FTP 도구 도 마찬가지 입 니 다.
B. 그 다음 에 vs 와 그의 자체 도구 인 spy + 를 더 하면 만사 가 다 잘 될 것 입 니 다.
사고의 방향 을 실현 하 다.
XFTP 를 통 해 백 엔 드 서버 에 대응 하 는 디 렉 터 리 아래 에 업로드 합 니 다. 이때 백 엔 드 서버 는 프론트 서버 의 기본 디 렉 터 리 구조 와 일치 합 니 다. 적어도 주요 채널 디 렉 터 리 는 일치 합 니 다. 이것 은 우리 뒤에 프론트 서버 군 으로 동기 화 하 는 데 가장 기본 적 인 이론 적 근 거 를 찾 았 습 니 다.사용자 가 XFTP 를 통 해 동기 화 할 파일 을 업로드 한 후에 미리 시작 한 이 보조 도 구 를 통 해 방금 파일 이 있 는 디 렉 터 리 구 조 를 자동 으로 찾 아 백 엔 드 프로그램 에 전달 하고 백 엔 드 프로그램 은 보조 도 구 를 통 해 전 송 된 디 렉 터 리 구 조 를 통 해 백 엔 드 기기 의 지정 한 파일 을 찾 아 셸 문 구 를 다른 전단 기 에 동기 화 합 니 다.이렇게 한 후에 다음 과 같은 조작 과정 이 형성 되 었 다. XFTP 업로드 --> 보조 도구 에서 동기 화 -> 배경 프로그램 이 보조 도구 전송 경 로 를 자동 으로 가 져 와 전단 기 에 동기 화 하 는 것 은 매우 번 거 로 운 과정 이 었 다. 앞으로 동기 화 버튼 만 있 으 면 된다.
구체 적 인 실현 방법 (주체 실현 과 무관 한 문 구 를 많이 제거 했다)


//      
CWnd* pDesktopWnd = CWnd::GetDesktopWindow();

//        
CWnd* pWnd = pDesktopWnd->GetWindow(GW_CHILD);

while (pWnd != NULL) 
{  
   //      
   CString strWindowText= _T("");
   ::GetWindowText(pWnd->GetSafeHwnd(), strWindowText.GetBuffer(256), 256);
   strWindowText.ReleaseBuffer();
  
   if(strWindowText.Find("Xftp 1.3")!=-1)
   {
    fHwnd = pWnd->GetSafeHwnd();
    break;
   }

   //         
   pWnd = pWnd->GetWindow(GW_HWNDNEXT);
}

hWnd = fHwnd;  
hWnd=::FindWindowEx(hWnd,0,"MDIClient",0); 
hWnd=::FindWindowEx(hWnd,0,0,strFTP); //      
hWnd=::FindWindowEx(hWnd,0,"AfxFrameOrView42",0);
hWnd=::FindWindowEx(hWnd,0,"ComboBoxEx32",0);
hWnd=::FindWindowEx(hWnd,0,"ComboBox",0);
hWnd=::FindWindowEx(hWnd,0,"Edit",0);

char buf[MAX_PATH];

//     
::SendMessage(hWnd,WM_GETTEXT,MAX_PATH,(LPARAM)buf);

hWnd = fHwnd;
    hWnd=::FindWindowEx(hWnd,0,"MDIClient",0); 
    hWnd=::FindWindowEx(hWnd,0,0,"22.22.22.222"); //      
    hWnd=::FindWindowEx(hWnd,0,"AfxFrameOrView42",0);

   int count;   
int i;

BOOL bResult = FALSE;
HWND hWndNextChild = ::GetWindow(hWnd,GW_CHILD);

//    
while (::IsWindow(hWndNextChild))
{
    if (::GetParent(hWndNextChild) == hWnd)
    {
     //      
     char Class[MAX_PATH];
     ::GetClassName(hWndNextChild,Class,MAX_PATH);
     if(!strcmp(Class,"SysListView32"))
     {     
      if(::IsWindowVisible(hWndNextChild))//      ,     ftp  2     
      {
       count = 0;
       count = (int)::SendMessage(hWndNextChild,LVM_GETITEMCOUNT,0,0);
       if(count)
       {
        hListview = hWndNextChild;
        bResult = TRUE;       
       }
     }
    
     }
    }
    hWndNextChild = ::GetWindow(hWndNextChild,GW_HWNDNEXT);
}

좋은 웹페이지 즐겨찾기