Search Results for 'MFC'

3 POSTS

  1. 2006년 07월 21일 웹페이지 긁어오는 소스 (MFC, VC++.NET) (2)
  2. 2006년 07월 13일 C2220 에러에 관하여.. (7)
  3. 2006년 05월 17일 외부프로그램 실행과 관련있는 소스~ (2)

웹페이지 긁어오는 소스 (MFC, VC++.NET)

Posted 2006년 07월 21일 23시 26분, Filed under: Teeny Tools/phpMyMemo
phpMyMemo와 상관이 있는 소스일 듯 하네요.
웹에서 실행되는 내용을.. 가져오는 소스입니다.

원래는 MFC로 만드려고 계획했으나,
VC++ .NET을 사용해서 해보려고 수정해봤습니다.

VB.NET이나 C#.NET은 참고할만한 곳이 많은데..
VC++.NET은 찾기 힘드네요.
어쩔 수 없이 C# 소스를 찾아서 바꾸기도 하고..
맨땅에 헤딩하듯이 MSDN을 찾아보기도 하고..
쉽지 않았네요.
그래도 재미있었네요~ ^^


<MFC용>
//#include <Wininet.h> // 필요한 헤더 파일
#pragma comment(lib, "wininet") // 필요한 lib 파일
#include <afxinet.h>


void CTestphpDlg::GOGO()
{

// echo로 설정된 값 가져오기...
char* address = "http://[경로]/version.php";  //여기는 원하는 주소로 수정~
CInternetSession session;
CInternetFile *pHttpFile = NULL;


try
{
  pHttpFile = (CInternetFile *) session.OpenURL(address);
}
catch (CInternetException* pEx)
{
  pHttpFile = NULL;
  unsigned long iErr = pEx->m_dwError;
  AfxMessageBox(_T("Internet connection error %d"));
}


CString szReturnedStrings = _T("");
CString szReturn;

while(pHttpFile->ReadString(szReturn))
szReturnedStrings = szReturnedStrings + szReturn;

// szReturnedStrings.Replace("<ENTER>","\\\n");
AfxMessageBox(szReturnedStrings);


pHttpFile->Close();
}


<VC++ .NET용>
//위에 쓰고
using namespace System::Net;
using namespace System::IO;
using namespace System::Text;  //String 용
using namespace System::Diagnostics; 
//Debug::WriteLine용




//실행부분에는..
Uri^ myUri =gcnew Uri("http://[경로]/version.php");  //여기는 원하는 주소로 수정~
WebRequest^ webReq = WebRequest::CreateDefault(myUri);
WebResponse^ webRes = webReq->GetResponse();
Stream^ ReceiveStream = webRes->GetResponseStream();


StreamReader^ reader = gcnew StreamReader(ReceiveStream, Encoding::Default );

array<Char>^ read = gcnew array<Char>(256);
String^ input = gcnew String(read);

while( !String::IsNullOrEmpty(input = reader->ReadLine()) )
{
  Debug::WriteLine(input);
}


reader->Close();
webRes->Close();

이올린에 북마크하기(0) 이올린에 추천하기(0)

Trackback URL : http://php.chol.com/~perrkoo/tt/trackback/202

  1. # BlogIcon Wiziple 2006년 08월 02일 09시 14분 Delete Reply

    파일로 저장할때는 간단하게 한줄^^

    URLDownloadToFile();

  2. # BlogIcon perrkoo 2006년 08월 02일 10시 49분 Delete Reply

    오오 그렇군요. 함수를 본 적은 있는데, 어디에 써먹나 몰랐는데 ^^ 감사합니다~

Leave a comment



C2220 에러에 관하여..

Posted 2006년 07월 13일 21시 13분, Filed under: Teeny Tools/Etc.
MFC로 회사에서 프로그램을 짜다가 처음보는 에러를 만났습니다.

Compiler Error C2220 warning treated as error - no object file generated

이렇게 뜨더군요.
사실 warning treated as error 만 뭔소린가 파악해도 쉽게 알 수 있을지 모르지만.. -_-;;
처음보는 에러인지라..

국내 사이트를 꽤 찾아봐도 싱그러운 해답은 없더군요.
모 국내 개발자께서 C에서는 그냥 넘어갈 것인데 C++에서는 에러로 처리하는 것 같다고 하시더군요.
배열을 0으로 설정을 해서 그렇다고 하시는데.. 내 경우는 아닌 거 같구.

AutoCAD를 컨트롤 할 일이 있어서 ObjectARX를 사용하는 곳에
MFC로 이미 만든 프로그램에 있던 함수인지라 전혀 문제가 없다고 생각하고 가져다 발랐더만..
대략난감.

여튼 외국사이트에서 도움을 받았는데..
어처구니 없게도
"treat warnings as errors"라는 옵션을 꺼버리면 되더군요.
컴파일러 옵션에서는 "/WX"라는 옵션을 지우면되구요.

알고보면 간단하지만..
저처럼 헤매이실 다른 분을 위해 남깁니다.

<도움받은 사이트>
http://microsoft.ease.lsoft.com/scripts/wa-msn.exe?A2=ind0105c&L=mfc&P=367

http://msdn.microsoft.com/library/defau ··· 2220.asp(새 창으로 열기)
이올린에 북마크하기(0) 이올린에 추천하기(0)

Trackback URL : http://php.chol.com/~perrkoo/tt/trackback/197

  1. # 김현중 2006년 12월 18일 15시 38분 Delete Reply

    감사합니다..^^

  2. # BlogIcon perrkoo 2006년 12월 28일 10시 26분 Delete Reply

    별 말씀을요~ ^^

  3. # 김구진 2007년 09월 12일 17시 26분 Delete Reply

    감사합니다.. 이문제 때문에 한참을 고민하다가 이 글을보고 겨우 해결했네요..ㅠㅠ 다시 한번 감사드립니다!!ㅎ

  4. # BlogIcon perrkoo 2007년 09월 19일 23시 00분 Delete Reply

    아 그렇습니까? 다행이네요~ ^^

  5. # dalhee 2008년 04월 25일 13시 25분 Delete Reply

    오늘 libtorrent 를 빌드하다가...헤매이고 있었는데 큰 도움이 되었습니다.
    감사합니다.

  6. # BlogIcon perrkoo 2008년 04월 26일 21시 38분 Delete Reply

    도움이 되었다니.. 기분이 정말 좋습니다. ^^

  7. # BlogIcon June 2008년 10월 17일 16시 37분 Delete Reply

    하나라도 워링이나면 발생합니다.
    경고수준 낮추던지 옵션을 끄던지하는 방법도 있겠지만
    워링을 잡는게 더 좋은 방법일것 같아요 ^^;

Leave a comment



외부프로그램 실행과 관련있는 소스~

Posted 2006년 05월 17일 22시 58분, Filed under: Teeny Tools/Etc.
선배가 물어보길래..
찾아 본 소스..
아마 devpia에 있던 것을 제가 아주 조금 손 본 정도 입니다.

하나는 외부프로그램 실행시켜 놓고.. 끝날 때까지 기둘리는 간단한 소스
또 하나는 커맨드 창에서 나오는 내용을 스트링으로 받는 내용.
원래는 텍스트 파일 같은 것으로 저장하는 건데 그냥 CString으로 받는 것으로 수정.
원소스의 텍스트로 저장 부분은 그냥 주석처리 했습니다.
의외로 필요한 부분이 많을 소스...

  CString sCmd;
  sCmd="c:\\windows\\system32\\notepad.exe"; //실행할 프로그램 경로명
  char * cCmd = new char[sCmd.GetLength() + 1];
  strcpy(cCmd, sCmd);

  STARTUPINFO si;
  ZeroMemory(&si, sizeof(si));
  si.cb = sizeof(STARTUPINFO);
  si.dwFlags = STARTF_USESHOWWINDOW;
  si.wShowWindow = SW_SHOW;
  PROCESS_INFORMATION pi;
  ZeroMemory(&pi, sizeof(pi));

  BOOL bRet = CreateProcess(0, cCmd, NULL, NULL, TRUE, DETACHED_PROCESS, NULL, NULL, &si, &pi);
  WaitForSingleObject(pi.hProcess, INFINITE); //실행된 프로세스가 끝날때까지 기둘린다.
  AfxMessageBox("test"); //없어도 무방.. 그냥 확인할 겸..

  CloseHandle(pi.hProcess);
  CloseHandle(pi.hThread);

  cCmd = NULL;
  delete [] cCmd;


// 버퍼 사이즈 정의
#define BUFFER_SIZE 4096

void CTestprocessDlg::OnOk()
{
  STARTUPINFO si;
  PROCESS_INFORMATION pi;
  HANDLE hPipeRead, hPipeWrite;
  HANDLE hOutputFile;
  SECURITY_ATTRIBUTES sa;

  TCHAR szCmdLine[MAX_PATH];
  TCHAR szBuffer[BUFFER_SIZE + 1];
  DWORD dwBytesRead = 0, dwBytesWrite;
  DWORD dwExitCode = 0, dwAvail = 0, dwResult = 0;

  lstrcpy(szCmdLine, "c:\\windows\\system32\\cmd.exe /?"); //실행할 프로그램 경로...
  sa.nLength = sizeof(SECURITY_ATTRIBUTES);
  sa.bInheritHandle = TRUE;
  sa.lpSecurityDescriptor = NULL;

  // 파이프를 생성
  if(!CreatePipe( &hPipeRead, &hPipeWrite, &sa, 0))
  {
      AfxMessageBox("Error");
      return;
  }

  ZeroMemory( &pi, sizeof(pi) );
  ZeroMemory( &si, sizeof(si) );
  si.cb = sizeof(si);

  // 시작 플래그로 표준 입,출력 핸들 지정 및 윈도우 표시 방식을 설정한다.
  si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;

  // 프로세스의 출력을 파이프로 설정한다.
  si.hStdInput  = GetStdHandle(STD_INPUT_HANDLE);
  si.hStdOutput = hPipeWrite;
  si.hStdError = GetStdHandle(STD_ERROR_HANDLE);

  // 윈도우는 숨겨서 시작하게 한다.
  si.wShowWindow = SW_HIDE;

//파일 출력 안할란다.
/*
  // 출력 파일을 생성한다.
  hOutputFile = CreateFile("C:\\report.txt",
                      GENERIC_WRITE,
                      0,
                      NULL,
                      CREATE_ALWAYS,
                      FILE_ATTRIBUTE_NORMAL,
                      NULL);
  if(hOutputFile == INVALID_HANDLE_VALUE)
  {
      AfxMessageBox("Failed to create file.");
      return;
  }
*/

  // 프로세스를 실행한다.
  if(!CreateProcess(NULL, szCmdLine, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi))
  {
      AfxMessageBox("Failed to execute CreateProcess().");
      return;
  }

  // 프로세스가 살아있는 동안만 파이프의 내용을 출력파일로 쓴다.
  while(dwExitCode == 0)
  {
      // 프로세스가 종료하기를 기다린다.
      dwResult = WaitForSingleObject(pi.hProcess, 500);
      // 파이프에 내요이 있는지 확인한다.
      if(PeekNamedPipe(hPipeRead, NULL, 0, NULL, &dwAvail, NULL))
      {
          if(dwAvail > 0)
          {
              // 파이프의 내용을 버퍼 만큼 읽는다.
              ReadFile(hPipeRead, &szBuffer, BUFFER_SIZE, &dwBytesRead, NULL);
              // 출력 파일에 파이프에서 읽은 데이터를 쓴다.
  //         WriteFile(hOutputFile, szBuffer, dwBytesRead, &dwBytesWrite, NULL);
  // 파일출력 안하고 화면상에 메시지 박스로 보기
  unsigned char temp[BUFFER_SIZE];
  memcpy(temp,szBuffer,BUFFER_SIZE);
  AfxMessageBox((LPCTSTR)temp);
          }
      }
      // Time Out이 걸린 것이 아니면 파이프 읽기를 종료한다.
      if(dwResult != WAIT_TIMEOUT)
          dwExitCode = 1;
  }

  // 출력파일 안 만든다..
  // 출력파일을 닫는다.
/*
  if(hOutputFile != INVALID_HANDLE_VALUE)
      CloseHandle(hOutputFile);
*/

  // 프로세스 종료코드를 얻는다.
  GetExitCodeProcess(pi.hProcess, &dwExitCode);
  // 프로세스 핸들을 닫는다.
  CloseHandle( pi.hProcess );
  CloseHandle( pi.hThread );

}
이올린에 북마크하기(0) 이올린에 추천하기(0)

Trackback URL : http://php.chol.com/~perrkoo/tt/trackback/185

  1. # BlogIcon Wiziple 2006년 05월 25일 09시 07분 Delete Reply

    안녕하세요. 댓글보고 링크타고 왔습니다.^^
    방명록에 남기려고 했는데... 확인이 늦으실 거 같아서 정겨운 C++ 소스 댓글에-_-;;;;;;;;;;
    저도 회사에서 MFC만 하는데;;;;
    개발자 블로그는 즐겨찾기 추가해놓아서... 자주 들릴께요^^;

  2. # BlogIcon perrkoo 2006년 05월 25일 15시 59분 Delete Reply

    앗.. 감사합니다. 별볼일 없는 사이트라서리..
    심심하실 때 놀러오셔요~

Leave a comment




Calendar

«   2010년 03월   »
  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      

Recent Posts

  1. 하지만.. 후회는...
  2. 버려야 할 나쁜 습관 #2
  3. 버려야 할 나쁜 습관 #1
  4. 산세베리아
  5. 신파극

Recent Comments

  1. 언녕허세요? 23456 2009년
  2. 하나라도 워링이나면 발생합니다. 경고.. June 2008년
  3. 아... 아직 사용하시는 분이 계셨군요... perrkoo 2008년
  4. 저는 아직도 쓰고 있습니다. 혹시 업글.. Text2J사용자 2008년
  5. -_-;; 뭐라노? 씰데없는 코멘트구마이 perrkoo 2008년

Recent Trackbacks

  1. ExacTime 0.9 Beta 공개!!! 벽에게 말걸기 2006년
  2. ExacTime 이것은 뭐냐? 벽에게 말걸기 2006년
  3. 블로그 방문자 통합 10만명 돌파 기념!! Multimedia 評 2006년
  4. TEXT2JPEG4PSP v0.76 SE (Special Edition) 벽에게 말걸기 2006년
  5. TEXT2JPEG4PSP v0.76 벽에게 말걸기 2006년

Bookmarks

  1. Everyone and Everything
  2. ExacTime Q/A 게시판
  3. Multimedia 評
  4. Rhino's Cool Talk
  5. ShuTime Homepage
  6. TEXT2JPEG4PSP Q/A 게시판
  7. ▒ 제닉스의 사고뭉치 ▒

Site Stats

TOTAL 120136 HIT
TODAY 20 HIT
YESTERDAY 23 HIT
Creative Commons License

이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.