이 기사는 Lanyus가 "Delphi for Wonderful Programming"에서 수집하고 편집했습니다.
1. 작업 표시 줄을 숨 깁니다
Windows에서 시스템의 작업 표시 줄은 기본적으로 창 클래스 이름 "Shell_Traywnd"가있는 창입니다. 작업을 구현하려면 API 기능을 사용할 수 있습니다.
FindWindow 및
목표를 달성하기위한 쇼 와디.
var
Wndhandle : Thandle;
wndclass : char의 배열 [0..50];
시작하다
strpcopy (@wndclass [0], 'shell_traywnd');
wndhandle : = FindWindow (@WndClass [0], NIL);
Showwindow (Wndhandle, SW_HIDE);
끝;
2. 데스크탑에 숨겨진 바로 가기
작업 표시 줄과 마찬가지로 데스크탑은 실제로 "Progman"입니다.
표시 여부를 결정합니다.
3. 작업 표시 줄 크기와 위치를 얻으십시오
FindWindow를 사용하여 핸들을 찾은 다음 getWindowRect를 사용하여 현재 작업 표시 줄 크기를 얻으십시오.
getWindowRect (hwnd hwnd, // 요청 된 창의 핸들
lprect lprect // 창 좌표를 저장하는 구조의 주소
) : 부울;
4. CPU 정보를 얻으십시오
CPU의 관련 정보는 구조에 저장되며, 이는 델파이가 TsystemInfo와 함께 캡슐화되고 다음과 같이 정의됩니다.
typedef struct_system_info {
노동 조합{
dword dwoemid; // 다음 구조 지점 이이 변수를 사용하는 대신 사용되었습니다.
구조 {
Word wprocessorarchitection; // 프로세서의 아키텍처를 나타냅니다
Worderved; // 예비 단어
};
};
dword swpagesiae; // Pagination 크기
lpvoid lpminumpplicationAddress; // 응용 프로그램 및 동적 링크 라이브러리가 액세스 할 수있는 최소 주소
lpvoid lpmaxumapplicationAddress; // 응용 프로그램 및 동적 링크 라이브러리가 액세스 할 수있는 최대 주소
dword swactiveprocessormask; // 활성 프로세서의 마스크
dword dwnumberofprocessors // 프로세서 수;
dword dwprocessortype; // 프로세서 카테고리
dword dwallocationgranularity; // 가상 메모리 주소 할당 간격
Word wprocessorLevel; // 프로세서 레벨
Word wprocessorrevision; // 프로세서 수정 정보
} system_info;
그중에서도 DWPROCESSORVE는 WPROCESSERARCHITECTRE, WPROCESSORLEVEL 및 WPROCESSORREVISION의 세 멤버에 의해 결정되며 그 값은 다음과 같습니다.
Processor_intel_386 : Intel80386 시리즈;
Processor_ITNEL_486 : Intel80486 시리즈;
Processor_intel_pentium : Intel Pentium 시리즈;
Processor_MIPS_R4000 : MIPS의 4000 시리즈 (Windows NT에만 적용 가능);
Processor_alpha_21064 : Alpha의 21064 시리즈 (Windows NT에만 적용 가능);
또한 CPU 정보를 얻은 후 API 기능 GetSystemInfo에 전화하십시오.
5. 메모리 정보를 얻습니다.
CPU를 얻는 것과 마찬가지로 시스템은 여전히 메모리 정보를 저장하기 위해 구조를 사용합니다. 이 저장된 내부 상태 정보의 정의는 다음과 같습니다.
typedef struct_memorystatus {
dword dwlength; // sizeof (memorystatus)는이 구조의 크기입니다
DWORD DWMEMORYLOAD;
dword dwtotalphys; // 총 물리적 메모리 크기
dword dwavailphys; // 물리적 메모리 크기
dword dwtotalpagefile; // 총 페이지 파일 크기
dword dwavailpagefile; // 사용 가능한 페이지 파일의 크기
dword dwtotalvirtual; // 총 가상 메모리의 크기
dword dwavailvirtual; // 사용 가능한 가상 메모리의 크기
} memorystatus,*lpmemorystatus;
마지막으로 API 기능 GlobalMemoryStatus에 호출하여 메모리 정보를 얻으십시오.
6. 디스크 공간 크기를 가져옵니다. (테스트는 부정확 한 것으로 나타났습니다)
API 기능 getDiskFreespace를 사용하십시오.
bool getDiskfreespace (
lpctstr lprootpathname, // 루트 디렉토리
lpdword lpsectorspercluster, // 클러스터 당 섹터 수
LPDWORD LPBYTESPERSEctor, // 부문 당 바이트 수
lpdword lpnumberoffreeclusters, // 사용 가능한 클러스터 수
lpdword lptotalnumberofclusters // 총 클러스터 수
);
절차 tform1.bitbtn1click (sender : tobject);
var
secspclu, bytespsc, freeclu, totalclu, ts, fs : dword;
시작하다
getDiskFreespace ( 'c :/', secspclu, bytespsec, freeclu, totalclu);
fs : = freeclu*secspclu*bytespsec;
ts : = Totalclu*secspclu*bytespsec;
edit1.text : = FormatFloat ( '##, ###', ts);
edit2.text : = FormatFloat ( '##, ###', fs);
끝;
7. 마우스 이동 범위를 제한합니다.
Windows ClipCursor에는 기성품 API 기능이있어 커서가 영역을 이동하는 것을 제한 할 수 있습니다.
부울 클립 커서 (
const rect *lprect // 직사각형 범위 데이터를 저장하는 구조를 가리 킵니다.
);
이 기능을 사용하면 화면에서 커서의 이동 범위를 제한 할 수 있습니다. 그러나 마우스를 제어하여 특정 창의 고정 범위 내에서 이동하려면 CA에 전화해야합니다.
기능
한 형식의 좌표를 다른 관련 양식 좌표로 변환하는 MapWindowPoints.
int mapwindowpoints (
Hwnd Hwndfrom, // 소스 창 핸들
hwnd hwndto, // 대상 양식 핸들
lppoint lppoints, // 변환 해야하는 좌표가 포함 된 구조 배열을 가리 킵니다.
uint cpoints // 배열의 구조 수
);
매개 변수 hwndform 또는 hwndto가 null 또는 hwnd_desktop 인 경우 소스 양식 또는 대상 양식이 화면 형식임을 나타냅니다. 매개 변수 lppoints는 a를 가리킬 수 있습니다
이 시점에서 CPOINTS
2의 값은 2로 설정됩니다.
절차 tform1.bitbtn1click (sender : tobject);
var
SC : Trect;
시작하다
sc : = bitbtn2.boundsRect;
MapWindowPoints (핸들, 0, SC, 2);
ClipCursor (@sc);
끝;
절차 tform1.bitbtn2Click (sender : tobject);
var
SC : Trect;
시작하다
sc : = rect (0,0, screen.width, screen.height);
ClipCursor (@sc);
끝;
8. 스크린 세이버를 시작하는 방법.
SendMessage 또는 PostMessage 기능을 사용하십시오.
절차 tform1.bitbtn3click (sender : tobject);
시작하다
SendMessage (hwnd_broadcast, wm_syscommand, sc_screensave, 0);
끝;
SystemParametersInfo 함수를 호출하는 화면 보호기를 시작하는 방법도 있습니다. 이는 매개 변수 설정을 통해 화면 보호기를 시작하거나 닫을 수 있습니다.
SystemParametersInfo (SPI_SETSCREENDAVEACTIVE, 1, NIL, 0);
SystemParametersInfo (SPI_SETSCREENSAVEACTIVE, 0, NIL, 0);
9. 드라이브가 준비되었는지 확인하십시오.
드라이브가 준비되었는지 여부를 감지하는 특별한 기능은 없으며이 작업을 구현하기 위해 1 인 API 기능이라고 할 수 없습니다. 그러나 우리
디스크는 디스크 용량을 감지하는 데 사용될 수 있습니다. 드라이브가 존재하지 않거나 준비되지 않은 경우, 다른 경우에는 디스크 또는 CD가 반환됩니다.
용량.
함수 디스크스 (드라이브 : 바이트) : int64;
매개 변수가 0 인 경우 현재 드라이브가 1 인 경우 디스크 A를 의미합니다.
증가 ...