<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>MFC :: 태그 :: 모두의프린터</title><link>https://modu-print.com/tags/mfc/</link><description/><generator>Hugo</generator><language>ko-KR</language><lastBuildDate>Sat, 05 Aug 2023 09:06:16 +0900</lastBuildDate><atom:link href="https://modu-print.com/tags/mfc/index.xml" rel="self" type="application/rss+xml"/><item><title>CreateProcessAsUser - 서비스에서 GUI포함한 프로그램 실행</title><link>https://modu-print.com/posts/3870/</link><pubDate>Mon, 21 Jun 2021 13:22:00 +0900</pubDate><guid>https://modu-print.com/posts/3870/</guid><description>일반적으로 윈서 서비스 프로그램은 일반 어플리케이션과 다른 영역에서 실행되기 때문에.. 서비스가 SheelExecute나 CreateProcess 함수등으로 실행한 프로그램들은 GUI를 포함하고 있다하더라도 화면에 표시되지 않습니다.&#10;이러한 이유로 서비스 프로세스에서 .. GUI를 포함한 프로그램을 실행하려 하는 경우에는 ..&#10;CreateProcessAsUser 함수를 통해서 실행을 해줘야 합니다.&#10;이떄 사용가능한 함수인데요..&#10;이 함수 인자가 2개인데요 szExeName, lpCommandLine 2개인데 ..</description></item><item><title>ShellExcute - 프로세스 종료까지 대기</title><link>https://modu-print.com/posts/3868/</link><pubDate>Mon, 21 Jun 2021 13:20:00 +0900</pubDate><guid>https://modu-print.com/posts/3868/</guid><description>MFC나 API 에서 외부 실행파일을 실행하는데 가장 많이쓰는게 ShellExcute 인데요 .. 간혹 .. 실행시킨 프로세스가 종료될때까지 대기해야 하는경우가 있습니다 그런때 사용하면 됩니다.&#10;C++ ::ZeroMemory(&amp;sei, sizeof(SHELLEXECUTEINFO)); sei.cbSize = sizeof(SHELLEXECUTEINFO); sei.lpFile = ("실행파일"); sei.lpDirectory = ("실행경로"); sei.lpParameters = _T("실행인자"); sei.nShow = SW_HIDE; sei.fMask = SEE_MASK_NOCLOSEPROCESS; sei.lpVerb = _T("open"); DWORD result = ::ShellExecuteEx(&amp;sei); if (sei.hProcess != NULL) { // 프로세스 종료까지 대기 WaitForSingleObject(sei.hProcess, INFINITE); }</description></item><item><title>TEA Encryption Algorithm, TEA 암호화 알고리즘</title><link>https://modu-print.com/posts/3879/</link><pubDate>Wed, 09 Jun 2021 13:29:00 +0900</pubDate><guid>https://modu-print.com/posts/3879/</guid><description>C++ // Encryption ( 8 Byte ) void encipher( unsigned long const v, unsigned long const w, const unsigned long const k ) { register unsigned long y = v[0], z = v[1], sum = 0, delta = 0x9E3779B9, a = k[0], b = k[1], c = k[2], d = k[3], n = 8; while(n–&gt;0) { sum += delta; y += (z &lt;&lt; 4)+a ^ z+sum ^ (z &gt;&gt; 5)+b; z += (y &lt;&lt; 4)+c ^ y+sum ^ (y &gt;&gt; 5)+d; } w[0] = y; w[1] = z; } // Decryption void decipher( unsigned long const v, unsigned long const w, const unsigned long const k ) { register unsigned long y = v[0], z = v[1], sum = 0, delta = 0x9E3779B9, a = k[0], b = k[1], c = k[2], d = k[3], n = 8; //sum = delta&lt;&lt;5;//, in general sum = delta * n / sum = delta n; while(n–&gt;0) { z -= (y &lt;&lt; 4)+c ^ y+sum ^ (y &gt;&gt; 5)+d; y -= (z &lt;&lt; 4)+a ^ z+sum ^ (z &gt;&gt; 5)+b; sum -= delta; } w[0] = y; w[1] = z; } / *&#9;TEA_EncryptData / unsigned long TEA_EncryptData( char plainData, char encData, unsigned long size , unsigned long key ) { unsigned long dwPos = 0; for( unsigned long i = 0; i &lt; size; i += 8 ) { encipher( (unsigned long)&amp;plainData[i], (unsigned long)&amp;encData[dwPos], key ); dwPos += 8; } return dwPos; } / *&#9;TEA_DecryptData / unsigned long TEA_DecryptData( char encData, char plainData, unsigned long size, unsigned long key ) { unsigned long dwPos = 0; for( unsigned long i = 0; i &lt; size; i += 8 ) { decipher( (unsigned long*)&amp;encData[i], (unsigned long*)&amp;plainData[dwPos], key ); dwPos += 8; } return dwPos; }</description></item><item><title>[MFC] 문자열 분리 - Split String</title><link>https://modu-print.com/posts/3877/</link><pubDate>Sat, 10 Apr 2021 13:28:00 +0900</pubDate><guid>https://modu-print.com/posts/3877/</guid><description>C++ / * SplitString / void SplitString(TCHAR strData, TCHAR Seperator, CStringArray&amp; arr) { CString data = strData; int Position = 0; CString Token; Token = data.Tokenize(Seperator, Position); if (Token != L"") arr.Add(Token); while (!Token.IsEmpty()) { // Get next token. Token = data.Tokenize(Seperator, Position); if (Token != L"") { arr.Add(Token); } } data.Empty(); Token.Empty(); }</description></item></channel></rss>