GUI sin

오래된 프로그램에서 마우스로 포커스를 이동할때 한글이 잘리는 문제가 있습니다.

그런경우 해당 exe를 patch/fix 해줘야 하는데, 그게 Visual Studio 에 첨부되어 있다고해서, 필요한 파일을 추출했습니다.

 

exefix.zip
0.69MB

 

사용방법은,

1
2
3
4
5
D:\exefix>editbin "abc.exe" /SUBSYSTEM:WINDOWS,5.01
Microsoft (R) COFF/PE Editor Version 14.00.23506.0
Copyright (C) Microsoft Corporation. All rights reserved.
 
D:\exefix>
cs

이런식으로 적용합니다.

 

 

Comment +0

파일을 읽어 한글 추출하기


갑작스러운 오더에 이걸 어떻게 처리할까 고민하자마자 떠오른건 요즘 출퇴근 시간마다 공부했던 파이썬 이면 다른 언어보다 매우 간단하게 만들수 있을것 같다는 생각이 들더군요.


"주문 : MessageBox 가 포함된 모든 구문을 찾아 한글로 하드코딩 되어있는 부분을 모두 추출해 주세요.(추후 다국어 버전 지원을 위함)"


우선 파워빌더의 검색기능으로 어렵지 않게 MessageBox가 포함된 구문을 찾아서 msg.txt 라는 파일로 저장하고, 지난 3일동안 출퇴근길에서 갈고닦은 실력으로 한번 코딩해봤습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import re
 
= open("D:/msg.txt"'r', encoding='UTF8')
 
lines = f.readlines()
for line in lines:
    line = line.lower()
    find = line.find("messagebox")
    if not find:
        continue
    line = line[find + 10:]
    hangul = re.compile('[^ㄱ-ㅣ가-힣]+')
    result = hangul.sub('', line)
    if not result:
        continue
    print(line.strip())
f.close()
cs


시작한지 30분만에 완성!!!


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
C:\ProgramData\Anaconda3\python.exe D:/src/py/test.py
'    (오전 9:42:51)
사용 object
('알림','서버에 연결할수 없습니다.....! ~n~n인터넷 연결을 확인하시오.....! ~n~n~n' + trhicom.sqlerrtext)
('알림','db조회 중 에러발생 ~n' + trhicom.sqlerrtext)
('알림','프로파일의 computer=값을 설정하시오...!')
('알림','자동백업을 체크하시오...! ~n' + string(sqlca.sqlcode) + sqlca.sqlerrtext)
('알림','백업일자을 체크하시오...! ~n' + string(sqlca.sqlcode))
('알림','프로파일의 computer=값을 설정하시오...!')
('알림','자동백업을 체크하시오...! ~n' + string(sqlca.sqlcode))
('알림','백업일자을 체크하시오...! ~n' + string(sqlca.sqlcode))
("db 연결실패", sqlca.sqlerrtext)
("db 연결실패", sqlca.sqlerrtext)
.
.
.
(중략)
.
.
.
(smsg)    //rollback처리함.
('알림', '저장중 오류가 발생 했습니다.')
('확인','변경된 데이타를 저장하겠습니까..?',question!, yesnocancel!,1)
("알림", "정렬설정에 실패하였습니다.")
("알림", "정렬설정에 실패하였습니다.")
('조회조건 변경 오류', ls_rtn)
('확인', '발송된 데이터는 수정/삭제가 불가능합니다.')
('확인', string(ls_partordpk) + '번 주문번호와 관련된 모든 데이타가 삭제됩니다. 삭제하겠습니까 ..? ~n',question!,yesno!,2) = 2 then
smsg  //품목코드를 기준으로 기본데이타를 가져온다
(smsg)    //rollback처리함.
'    (오전 9:42:52)
 
Process finished with exit code 0
cs


이런식으로 추출이 됩니다. 딱 17줄의 코딩으로 이렇게 빠른 결과가 나오다니 너무 편리하네요.


하지만 글을 포스팅하면서 보니 여기저기 버그가 많이 보이네요.


1. 중복처리

2. 파일선택의 유용성


등등


천천히 수정해야겠습니다.






Comment +0