kkuzil.own@gmail.com

Posted
Filed under Development/C++
출처 : http://likehood.tistory.com/69

오랜만에 '개발' 카테고리에 글을..ㅋ

엄밀히 말하자면 프로세스의 워킹셋 사이즈를 가져오는 루틴이라고 봐야죠.

NT 4.0에서는 GetProcessMemoryInfo()을 호출할 때
"The program issued a command but the command lenght is incorrect" 라는 메세지 박스를 띄우는군요. Windows 업데이트문제인듯 한데..혹시 아시는 분 지혜를 부탁드릴께요~



#pragma comment(lib,"Psapi.lib")
#include "psapi.h"

DWORD GetUsingMemorySize(CString strProcessName)
{
 DWORD pid[1024];
 DWORD cb;
 EnumProcesses(pid,sizeof(DWORD)*1024,&cb);
 HMODULE hMo;
 CString strAll;
 for(int i = 0 ; i < 1024 ; ++i)
 {
  char szFileName[1024];
  HANDLE hProcess=OpenProcess(PROCESS_QUERY_INFORMATION |PROCESS_VM_READ,FALSE,pid[i]);
  if(!hProcess)
   continue;
  BOOL bb=EnumProcessModules(hProcess,&hMo,sizeof(hMo),&cb);
  if(!bb)
  {
   DWORD error=GetLastError();
   LPVOID lpMsgBuf;
   FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER
      |FORMAT_MESSAGE_FROM_SYSTEM
      |FORMAT_MESSAGE_IGNORE_INSERTS
      , NULL,error,0,(LPSTR)&lpMsgBuf,0,NULL);
   CString strLastErrMsg=static_cast<LPCSTR>(lpMsgBuf);
   LocalFree(lpMsgBuf);
   CloseHandle(hProcess);
   continue;
  }
  GetModuleFileNameEx(hProcess,hMo,szFileName,1024);
  CString strProcName(szFileName);
  if(strProcName.Find(strProcessName) != -1 )
  {
   PROCESS_MEMORY_COUNTERS mem;
   GetProcessMemoryInfo(hProcess,&mem,sizeof(PROCESS_MEMORY_COUNTERS));
   CloseHandle(hProcess);
   return mem.WorkingSetSize;
  }
  CloseHandle(hProcess);
 }
 return NULL;
}
2009/05/08 10:53 2009/05/08 10:53
Posted
Filed under Development/Delphi

기존의 패치들을 보면 VMT를 얻어서 테이블을 수정하거나 하는 등의 복잡한 방법이지만, 이 새로운 트릭에서는 이러한 구현없이 수정없이 그냥 간단한 구현 유닛을 uses 절 맨 마지막에 추가하는 것만으로 쉽게 해결을 할 수 있습니다.

실질적인 패치 코딩에서도 아주 간단하게 구현을 할 수 있습니다. 따로 패치를 위한 추가적인 코드도 필요없게 됩니다.

unit HVProgressBarVistaFix;

interface

uses Messages, ComCtrls;

type
TProgressBar = class(ComCtrls.TProgressBar) // 이곳의 선언이 이 코드의 핵심. 새로 선언된 아래의 핸들러가 적용됩니다.
private
procedure WMEraseBkgnd(var Message: TWmEraseBkgnd);
message WM_ERASEBKGND;
end;

implementation

procedure TProgressBar.WMEraseBkgnd(var Message: TWmEraseBkgnd);
begin
DefaultHandler(Message);
end;

end.

사용 방법은

uses
Windows, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, HVProgressBarVistaFix;


일반적으로 우리들은 이 문제를 해결하기 위해 TProgressBar를 계승해서 이러쿵저러쿵 해야 한다고 생각할 것입니다. 하지만 유닛 이름을 머리에 붙인 클래스 이름(위의 경우에는 ComCtrls.TProgressBar)을 사용하면 기존의 해당 클래스(위의 경우 TProgressBar)를 치환하는 효과가 일어납니다.


참고하시길.

내용 출처 : http://hallvards.blogspot.com/2007/04/hack16-published-field-rtti-replacement.html

2009/03/03 18:13 2009/03/03 18:13
Posted
Filed under Development/IT 용어등

ICMP(Internet Control Message Protocol:인터넷 제어 메세지 프로토콜)

네트워크 내에 발생 할 수 있는 여러 문제를 제어하기 위한 프로토콜.
ICMP 패킷의 대표적인 경우가 ping패킷으로, 특정 호스트가 동작하는지 알아보려고 ping 명령을
통해 대상 호스트로 ping을 보낸다. 이때 ping 패킷을 받은 대상 호스트는 다시 응답 패킷을 보내주는데
이렇게 돌아오는 응답을 통해서 대상 호스트의 동작상태를 확인할 수 있다.

ICMP는 이처럼 데이터 교환이 목적이 아닌, 네트워크 상황/상태를 알아보고 거기에서 발생되는
문제를 처리하기 위해 존재하는 프로토콜이다.

2008/11/19 10:05 2008/11/19 10:05
Posted
Filed under Development/IT 용어등
MTU(Maximum Transmission Unit)란 TCP/IP네트웍 등과 같이 패킷 또는 프레임 기반의 네트웍에서 전송될 수 있는 최대 크기의 패킷 또는 프레임을 말합니다. 한번에 전송할 수 있는 최대 전송량(Byte)인 MTU 값은 매체에 따라 달라집니다. 예를 들어 Ethernet 환경이라면 MTU default 값은 1500 이고 FDDI 인 경우 FDDI는 4000 정도 되고, X.25는 576, Gigabit MTU는 9000 정도 등 매체 특성에 따라 한번에 전송량이 결정됩니다.


원문 및 자세한 내용 : http://www.redwiki.net/wiki/wiki/MTU
2008/11/18 11:05 2008/11/18 11:05
Posted
Filed under Development/Delphi
CnPack.. 사용하면 무지 편한데 Gexpert랑 같이 쓰다보면 단축키도 겹치고
쓸데없이 기능이 넘 많아서 짜증(?)날때도 있다.
항상 설치하면 이 빼주는 옵션이 생각이 안나서 맨땅에 헤딩하는데.. 좀 정리좀 하는 차원에서..끄적

- MessageBox Visual Designer - X
메시지박스 코드를 편하게 위저드 형식으로 추가해 줄 수 있게 하는데 이건 이미 Gexpert에서 애용하는
기능이기에 제외시킨다.

- Tab Orders Configuration - X
컨트롤들의 탭 순서를 비주얼하게 표시해주는건데.. 활성화 시키면 컨트롤 많을 지저분해져서 뵈기싫어 지므로
제외시킨다.

- Component Prefix Wizard - X
컴포넌트 및 컨트롤 삽입 시 이름을 자동생성 시켜주는 기능인데.. 지맘대루 이름이 바뀌는 경우가 있어서
제외시킨다.

- Procedure List Wizard - X
프로시주어 리스트를 보여주는 위저드인데.. Ctrl+D가 Gexpert의 메시지박스 생성 기능이랑 겹치고
이미 Gexpert에서 Ctrl+G의 기능과 겹치기 때문에 제외시킨다.

- Editor Enhancements - X
Edit창안에 툴바를 생성해 주는건데.. 지저분하기만 하고 필요없다.. 필요하면 메뉴를 이용하자.

- Code Input Helper
코드 자동완성 기능인데.. 쓸데없이 많은 목록들이 발생되고 원하는 대소문자 구별을 멋대로 사용하므로 제외.
2008/11/12 14:46 2008/11/12 14:46