API 73

현재 및 최대 레지스트리 크기 프로그래밍 방식으로 확인 하는 방법

현재 및 최대 레지스트리 크기 프로그래밍 방식으로 확인 하는 방법 기술 자료: 235487 - 이 문서가 적용되는 제품 보기. 기계 번역 고지 사항 보기 기계 번역된 문서와 영문 원본 문서 나란히 보기 모두 확대 | 모두 축소 이 페이지에서 요약 자세한 내용 샘플 코드 참조 등록 정보 피드백 보내기 요약 Microsoft Windows NT, Microsoft Windows 2000 및 Microsoft Windows XP에서 레지스트리 추가 됩니다 새 데이터에 대 한 사용 가능한 공간이 충분히 있는지 확인 합니다 현재 및 최대 크기를 확인 하려면 설치 유틸리티에 대 한 일반적입니다. 이 문서에서는 성능 카운터 "% 사용에서 레지스트리 할당량"에서 "시스템" 개체 명명을 통해이 작업을 프로그래밍 방식으로..

API 2012.10.26

정보: 성능 카운터 및 인스턴스 열거 PDH 샘플 코드

정보: 성능 카운터 및 인스턴스 열거 PDH 샘플 코드 기술 자료: 287157 - 이 문서가 적용되는 제품 보기. 기계 번역 고지 사항 보기 기계 번역된 문서와 영문 원본 문서 나란히 보기 모두 확대 | 모두 축소 요약 성능 데이터 도우미 (PDH) API 성능 카운터 및 인스턴스를 지정한 컴퓨터의 지정한 개체 열거하는 데 사용할 수 있습니다. 이 문서에서는 필요한 PDH API 호출 순서를 설명합니다. 위로 가기 | 피드백 보내기 추가 정보 예제 코드에서는 방법을 보여 줍니다. 성능 카운터 및 인스턴스가 지정된 개체와 구하십시오. 목록에 얻은 후에 카운터 경로를 각 인스턴스에 대해 생성된 및 성능 데이터 값을 한 번 얻을 수 있습니다. #include #include #include #include ..

API 2012.10.25

커스텀 프로그레스바 만들어 보기

윈도우에서 기본적으로 제공하는 공용컨트롤의 프로그레스바는 색깔이 너무 단조롭고 프로그레스바에 문자열도 못 쓴다. 최소한의 골격만 작성했고, 영역 색깔이나 글자 색, 크기 등 더 세세한 설정을 하려면 멤버변수를 추가하고 프로시저의 WM_PAINT 코드를 수정하면 될 것이다. 특정 윈도우의 자식으로 들어가는 경우와 독립적인 별개의 윈도우로 존재하는 경우(부모 윈도우를 NULL로 설정시) 2가지 모두 가능하다. 생성자로 바로 생성할 수도 있고, 디폴트 생성자를 실행 후 나중에 Create함수로 생성할 수도 있다. 참고로 골조만 짜고 그때그때 실사용하는 소스에서 알맞게 수정하는 것도 좋은 방법인 것 같다. 너무 옵션을 많이 주면 쓸데없이 코드가 길어지고, 중요한 것도 아닌데 일반화하기 애매한 경우 스트레스~~~..

API 2012.10.19

프로세스 경로 구할 때 OpenProcess flag 팁

어떤 프로세스들은 이를테면 svchost.exe 같은 시스템 프로세스들은 OpenProcess에서 PROCESS_ALL_ACCESS를 옵션으로 주면 프로세스 풀패스를 제대로 구하지 못한다. 다음과 같이 PROCESS_QUERY_INFORMATION | PROCESS_VM_READ 플래그를 줘야 제대로 구해졌다. 여기서 PROCESS_VM_READ를 빠트려도 안구해진다. PROCESS_VM_READ는 프로세스 접근해서 메모리를 읽고자 할 때 주는 플래그인데, 뭔가 좀 이상하긴 하지만,,,;;; 아래는 예제이다. #include #include #pragma comment(lib, "shlwapi.lib") #include #pragma comment(lib, "psapi.lib") #include #inc..

API 2012.10.19

비정상적인 explorer 다운 상황 후 발생하는 메시지 및 트레이 아이콘 되살리기

시스템에 상주하는 explorer.exe가 비정상적인 에러로 다운되버릴 경우, explorer.exe는 자체적으로 재실행되지만,,, 트레이에 상주중인 아이콘은 전부 날라가버린다. 해당 사건이 발생한 경우 대비 트레이 아이콘을 복구하는 코드를 넣어줘야 된다. explorer.exe가 재시작되는 경우 각각의 윈도우들에 특별한 메시지가 전달되는데, 일반적인 WM_COMMAND, WM_CLOSE처럼 절대적인 상수값이 정해진 메시지들과 다르게 RegisterWindowMessage API를 통해 구할 수 있다. 특별한 문자열을 인수로 줘서 OS에 등록하고, 사용하는 쪽에서도 이 API를 사용하여 등록된 메시지 정수값을 구하는 방식이다. 고유한 문자열을 인수로 주기 때문에 프로세스간 상호 통신에 쓰이기도 한다. 이..

API 2012.10.16

비주얼 스튜디오 리소스 편집기에서 에디트 박스 높이가 줄어들지 않을 때 팁

에디트 박스의 경우 비주얼 스튜디오 6.0에서는 버그인지 몰라도 크기가 12이하로 안 줄어든다. 버튼 등은 잘 되는데 유독 에디트 박스만 그런다. 이럴 경우는 rc 파일을 찾아가서 메모장이나 에디트 플러스 등 텍스트 에디터로 열어서 해당 높이 부분을 찾아서 수정해 주면 된다. // rc 파일 열었을 때 모습 //~~~~~~~~~~~~~ 각종 인클루드 및 디파인 // 컨트롤들의 위치와 크기, 속성, 아이디 PUSHBUTTON "Open",IDC_BTN_OPEN_LOG_FILE,483,0,22,10,BS_CENTER | BS_VCENTER,WS_EX_STATICEDGE PUSHBUTTON "Del",IDC_BTN_DELETE_LOG_FILE,505,0,22,10,BS_CENTER | BS_VCENTER,WS..

API 2012.03.22

WaitForSingleObject의 첫 인수가 스레드 핸들인 경우 유의점

첫 인수가 스레드 핸들일 경우, 스레드가 종료하거나 두번째 인수인 time-out 시간에 도달하면 리턴하게 된다. 그런데 조금 유의할 게 둘이상의 스레드가 대기하는 경우... 타겟 스레드 종료시점이나 타임아웃 시점에 대기순서대로의 실행을 보장해주지 못한다. 이를 테면 WaitForSingleObject(h타겟스레드, 타임아웃); 이런 대기코드가 존재하고 대기 스레드 1이 먼저 대기상태에 들어가고 이후 대기 스레드 2가 대기상태에 들어가고 조금 있다가 대기 스레드 3이 대기상태에 들어간 후 타겟 스레드가 실행이 종료되면 대기상태에 가장 먼저 들어간 스레드 1이 먼저 실행되진 않는다. 대기 스레드 1, 대기 스레드 2, 대기 스레드 3 이런 순으로 항상 실행되지 않는다. 여러 번 테스트해 봤는데 거의 무작위..

API 2012.03.17

뮤텍스와 세마포어,,, WAIT_ABANDONED 발생 여부

WAIT_ABANDONED 이 리턴값은 WaitForSingleObject 기타 등등 대기 함수에서 동기화 객체를 소유한 스레드가 terminate되거나 exit 된 경우 발생하게 된다. 크리티컬 섹션 같은 동일 프로세스 내에서만 통용되는 동기화 함수는 이런 기능?을 제공하지 않으므로 소유 스레드가 락 상태가 되면 나머지 기다리는 스레드들은 무한정 대기해버리는 문제가 발생한다. 뮤텍스는 저 기능 하나만으로도 그 동안 매우 유용하게 프로세스 간이나 스레드 간에 잘 사용했다. 그런데 카운트 제한 때문에 세마포어를 사용할 일이 있어서 테스트해보았는데 뮤텍스처럼 불측의 종료시 WAIT_ABANDONED 결과값이 발생하지 않았다. 뮤텍스처럼 이름을 붙이는 것도 가능하고 프로세스 간에도 전역적으로 통용되니 비슷할 ..

API 2012.03.06