반응형 프로그래밍45 VBScript shell.run shell.run strCommand, [intWindowStyle],[bWaitOnReturn] -strCommand : 실행할 명령 -intWindowStyle : 윈도우 스타일의 Int 값 -bWaitOnReturn : 스크립트를 계속 실행하기 이전에 명령이 완료되기를 기다릴지 여부의 boolean 값 Window Style value description 0 Hide the window and activate another window 1 Activate and display the window. (restore size and position) Specify this flag when displaying a window for the first time 2 Activate & minimize 3.. 2011. 11. 24. VBScript DriveType 값 Value Description 0 Unknown 1 Removable 2 Fixed 3 Network 4 CD-ROM 5 RAM Disk 2011. 11. 24. VBScript CreateTextFile 함수 object.CreateTextFile(filename[,overwrite[,unicode]]) -filename : 생성할 파일 경로 및 파일명 -overwrite : 기존에 파일이 존재할 겨우 덮어 쓸지 여부로 Boolean 값을 가진다. -unicode : 파일을 Unicode로 생성할지 여부로 Boolean 값을 가지며 false의 경우 ASCII로 생성된다. 2011. 11. 24. VBScript 파일 객체 속성 값 Constant Value Description Nomal 0 Nomal file. No attributes are set ReadOnly 1 Read only file. Attribute is read/write Hidden 2 Hidden file. Attribute is read/write System 4 System file. Attribute is read/write Volume 8 Disk drive volume label. Attribute is read only Directory 16 Folder or directory. Attribute is read only Archive 32 File has changed since last backup. Attribute is read/write. .. 2011. 11. 24. Android 손전등 어플 만들기 우선 적당한 이름으로 프로젝트를 하나 생성을 한다. AndroidManifest.xml 파일을 열어 Activity 탭을 선택한 뒤 프로젝트를 생성할때 자동으로 생성된 액티비티의 Theme 속성의 Browse를 선택한다. SystemResources 중 Theme.NoTitleBar.Fullscreen을 선택한다. ※Notification 영역과 Title 영역을 모두 꽉 채우기 위해서 설정한다 그다음 Permissions 탭으로 넘어가서 Uses Permission을 추가한다. 새로 생성한 Uses Permission 값으로 android.permission.CAMERA를 선택한다. ※카메라의 플래시를 사용하기 위해서 필요한 퍼미션을 받기 위해서 설정한다. 마찬가지로 Uses Permission 값으로.. 2011. 9. 25. AVD & Eclipse 주요 단축키 1.AVD (Android Virtual Device) -F8 : 네트워크 On / Off 설정이 가능하다. 개발시 네트워크 환경에대한 테스트가 가능하다. -Ctrl + F11 : 화면 회전이 가능하다. 개발시 기기 화면 전환에 대한 테스트가 가능하다. 2.Eclipse -Ctrl + Shift + S : 변경된 파일 모두 저장 -Ctrl + B : 프로젝트 빌드 -Ctrl + F11 : 프로젝트 실행 -Ctrl + Space : 단어 자동 완성 (일부분만 작성하고 이 단축키를 사용하면 자동 완성창이 뜬다) -Ctrl + / : 선택된 영역을 주석처리한다. (Line 단위) -Alt + Shift + S : 추상 메소드, Getter & Setter 메소드 등 자동 완성 소스를 사용한다. -Ctrl + .. 2011. 9. 21. 안드로이드 프로젝트의 구성 -src : 실질적인 소스들을 작성되는 .java 파일들이 들어있는 디렉토리이다. -gen : 각종 리소스들의 id 값이 작성되어 있는 R.java 파일이 들어있는 디렉토리이다. ※이클립스에서 자동으로 작성되기 때문에 개발자가 임의적으로 수정하여서는 안 된다. -assets & res : 각종 리소스파일이 저장되는 디렉토리이다. assets는 하위 디렉토리 생성이 가능하나 res는 불가능하다는 약간의 차이점이 있다. -AndroidManifest.xml : 각종 속성 및 설정값들을 설정하는 파일이다. 2011. 9. 21. 안드로이드 프로젝트 생성하기 안드로이드 프로젝트는 File>New>Android Project 를 누르면 생성이 가능하다. 프로젝트 명을 적당히 작성하고 Build Target에 개발하고자 하는 안드로이드 플랫폼 버전을 선택해준 뒤 패키지명을 작성해주면 모든 설정이 완료된다. 패키지명은 두 단계 이상으로 설정하며 프로젝트 명과 도메인 주소를 역순으로 섞어 쓰는 방법이 무난하고 전 세계에서 유일해야한다. (안드로이드 어플리케이션의 고유 식별자로 쓰인다.) 2011. 9. 21. 안드로이드 개발 환경 구축하기 안드로이드 어플리케이션을 개발하기 위한 환경을 구축하기위해서는 다음 프로그램들이 필요하다. -JDK (Java Development Kit) : 안드로이드 어플리케이션의 경우 자바 기반으로 작성되기 때문에 JDK 설치가 필요하다 -Android SDK : 실질적인 안드로이드 개발 도구이다 -Eclipse EE : SE를 설치해도 무방하나 드물게 C와 연동하여 프로그래밍을 할 때 드물게 에러가 나는 경우가 있어서 EE를 설치하는 것이 좋다. -ADT (Android Development Tools) : 이클립스용 Android SDK 연동 플러그인 1.JDK 설치하기 가장 먼저 JDK의 설치가 필요하다. http://www.oracle.com/technetwork/java/javase/downloads/i.. 2011. 9. 19. 프로그래밍 게임 심심할때 간편하게 할 수 있는 프로그래밍 게임이다 동작 몇가지와 서브 함수 2개를 이용하여 파란 블록에 모두 불을 켜면 된다. 사이즈가 정해져 있으니 머리를 잘 써야한다. 2011. 8. 25. VEH (Vectored Exception Handling) 참조1 : http://msdn.microsoft.com/en-us/library/ms681420(v=VS.85).aspx 참조2 : http://blogs.msdn.com/b/zhanli/archive/2010/06/25/c-tips-addvectoredexceptionhandler-addvectoredcontinuehandler-and-setunhandledexceptionfilter.aspx VEH는 SEH의 확장된 개념으로써, 프레임 기반이 아니기 때문에 어떠한 곳에서든지 핸들러를 추가할 수 있다. 1.SetUnhandledExceptionFilter LPTOP_LEVEL_EXCEPTION_FILTER WINAPI SetUnhandledExceptionFilter( __in LPTOP_LEVE.. 2011. 8. 15. SEH(Structured Exception Handling) 참조 : http://msdn.microsoft.com/en-us/library/swezty51(v=VS.71).aspx 비동기적으로 아무 때나 발생가능한 인터럽트와 달리 실행 중인 프로그램의 직접적인 실행 결과로 발생하는 예외를 처리하기위하여 윈도우는 어플리케이션이 예외 발생시 제어를 받을 수 있도록 SEH를 사용한다. SEH는 시스템 메커니즘으로서 프로그램 언어 한정적인 것이 아니라 것에 유의해야한다. ※여기에서는 C를 기준으로 사용법을 기술한다. SEH는 기능적 특성에 따라 Termination Handler와 Exception Handler 두 가지로 나뉜다. 1.Termination Handler Termination Handler는 __try와 __finally 키워드로 구성되며 __try.. 2011. 8. 15. strrstr 함수 구현 (문자열 역순 탐색 함수) -strstr 함수와 유사하게 문자열을 탐색하나 역순으로 탐색한다. #include #include char* strrstr(char* str,char* ptn){ unsigned int ptnlen=0; unsigned int i=0; unsigned int j=0; char* offset=-1; //패턴 문자열 길이 획득 (인덱스로 사용하기 위해 1 감소) ptnlen=strlen(ptn)-1; //문자열의 오른쪽부터 비교 시작 for(i=strlen(str)-1;i != 0;i--){ //문자열의 현재 위치 문자가 패턴 문자열의 마지막 문자와 일치 하는지 확인 if(str[i] == ptn[ptnlen]){ //패턴 문자열이 1 글자이면 오프셋 값 저장하고 리턴 if(ptnlen == 0){ off.. 2011. 7. 20. 프로세스 리스트 얻기 -프로세스 리스트를 얻어와 프로세스 리스트를 구조체에 저장한다. -PLIST : 프로세스 경로, PID 값을 가지는 간단한 이중 연결리스트 구조체 -DeleteProcessList : 프로세스 리스트를 제거한다. -GetProcessList_TI : TlHelp32를 이용한 프로세스 리스트 획득 함수 (히든 프로세스 탐지 불가능) -GetProcessList_BF : Psapi를 이용한 프로세스 리스트 획득 함수 (Brute Force식 PID 탐색을 통한 히득 프로세스 탐지 가능) #include #include #include #define BUFSIZE 512 /** 프로세스 리스트 저장 구조체 **/ struct _PLIST{ char path[BUFSIZE]; int pid; struct _PL.. 2011. 7. 4. 프로세스 제거하기 -인자로 전달된 PID를 가지는 프로세스를 종료한다. #include int KillProcess(int pid){ HANDLE hProc; hProc=OpenProcess(PROCESS_TERMINATE,FALSE,pid); if(!hProc){ return GetLastError(); } TerminateProcess(hProc,0); CloseHandle(hProc); return 0; } 2011. 7. 4. 프로세스 생성하기 -인자로 전달된 파일을 실행시킨다. #include void createPS(char* path){ STARTUPINFO si; PROCESS_INFORMATION pi; int state=0; si.cb=sizeof(STARTUPINFO); si.lpReserved=NULL; si.lpReserved2=NULL; si.cbReserved2=NULL; si.lpDesktop=NULL; si.lpTitle=NULL; si.dwFlags=STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES; si.dwX=0; si.dwY=0; si.dwFillAttribute=0; si.wShowWindow=SW_HIDE; state=CreateProcess(NULL,path,NULL,NULL,TRUE.. 2011. 7. 4. 레지스트리 삭제하기 -RegDeleteValue로 레지스트리 값 제거가 가능하고 RegDeleteKey로 레지스트리 키 제거가 가능하다. #include int main(){ HKEY hkey; int result=0; RegOpenKey(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",&hkey); //레지스트리 값 삭제 if(RegDeleteValue(hkey,"StartUPProgram") == ERROR_SUCCESS){ result++; } //레지스트리 키 삭제 if(RegDeleteKey(HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Control\\SafeBoot\\Minimal\\SVCWI.. 2011. 7. 4. 레지스트리 값 출력하기 -인자로 전달된 레지스트리 키의 하위 키와 값들을 출력한다. ex:)PrintReg(HKEY_LOCAL_MACHINE,"\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"); //HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 하위키와 값들을 출력한다. #include #include #define MAX_KEY_SIZE 512 #define MAX_VALUE_SIZE 512 BOOL PrintReg(HKEY root,char* key){ HKEY hkey; TCHAR key[MAX_KEY_SIZE]=""; TCHAR value[MAX_VALUE_SIZE]=""; DWORD keysize=MAX.. 2011. 7. 4. 윈도우 서비스 제거하기 -인자로 전달된 서비스명의 윈도우 서비스를 제거한다. #include #define BUFSIZE 512 void RemoveService(char* sc_name){ SC_HANDLE hManager; SC_HANDLE hService; SERVICE_STATUS sStat; char path[BUFSIZE]; hManager=OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS); hService=OpenService(hManager,sc_name,SERVICE_ALL_ACCESS); if(hService){ //서비스 실행 중지 ControlService(hService,SERVICE_CONTROL_STOP,&sStat); while(QueryServiceStatus(h.. 2011. 7. 4. 파일 탐색하기 -인자로 전달된 디렉토리 경로로부터 파일을 탐색한다. ex:)SearchFile("C:\\*.*"); //C드라이브의 모든 파일을 탐색한다. #include #include #include #define BUFSIZE 512 void SearchFile(char* pPath){ struct _finddatai64_t c_file; intptr_t hFile; char dirPath[BUFSIZE]; char tempPath[BUFSIZE]; int i; //디렉토리 경로명만 추출하는 작업(현재 경로명에서 *.* 제거) strncpy(dirPath,pPath,BUFSIZE-1); i=strlen(dirPath)-4; dirPath[i]=0; //파일 탐색 시작 hFile=_findfirsti64(pPath.. 2011. 7. 4. 이전 1 2 3 다음 반응형