2010-06-02 4 views
3

어쨌든 C#에서 클립 보드를 잠그고 잠금 해제 할 수 있는지 궁금합니다. 기본적으로, 나는 그것에 무언가를 쓰고 싶습니다. 나는 물건을 집기 전에 다른 사람이 그것에 글을 쓰고 싶지 않습니다.클립 보드를 잠그는 방법?

어떻게하면됩니까?

+3

을 그 IMHO, 그리고 아마도 불가능합니다. 아마 당신이 실제로 달성하기를 원하는 것에 관해서 더 자세하게 말한다면 누군가는 더 나은 해결책을 가질 것입니다. – pdr

+2

클립 보드를 잠글 수 없다는 것을 압니다. 공유 리소스를위한 것입니다. –

+2

나쁜 생각은 아니 겠지만, 그것은 끔찍할 것입니다! 그것은 사용자가 데이터를 잃어 버리는 것을 아주 쉽게 만들어 줄 것이고, 심지어 그가 왜 물건을 복사하고 그것이 작동 할 수있는 대부분의 시간을 알지조차 모른다. –

답변

1

OpenClipboard() API 함수와 EmptyClipboard()는 CloseClipboard가 호출 될 때까지 클립 보드를 잠급니다. 아마도 타겟 프로세스에서 윈도우의 윈도우 핸들을 전달해야합니다. 이것이 실제로 작동하는지는 알 수 없습니다. 필요한 선언은 pinvoke.net을 방문하십시오.

+1

이것은 기술적으로는 효과가 있지만 여기있는 모든 사람들이 알게 되듯이 다른 모든 앱에서는 끔찍한 문제를 일으킬 수 있습니다. –

+0

흠, 그는 프로그램 속도를 높이려고 노력하고 있습니다. 그의 프로그램이 초점을 두는 동안 두 번째 정도는 끔찍한 문제가 아닙니다. –

0

아니요, 클립 보드가 그렇게 작동하지 않습니다. 사용자가 다른 앱에서 무언가를 복사하고 싶지만 앱이 어떻게 든 잠겨 있기 때문에 할 수 없으면 어떻게할까요?

두 프로세스가 통신하려는 경우 원격 처리, 명명 된 파이프, 소켓 또는 공유 메모리와 같은 프로세스 간 통신을 위해 설계된 대안을 조사하십시오. Remoting은 아마도 C#으로 작성된 응용 프로그램을 찾는 첫 번째 장소 일 것입니다.

1

@shambulator가 말했듯이, 이것은 클립 보드가 의도 한 것이 아닙니다. 아마 당신은 다른 압정을 시도해야합니다. 레거시 시스템과의 통합은 많은 방법으로 해결 될 수 있습니다 (대부분 불량!).

키 입력 만 보낼 수있는 시스템 : Windows 응용 프로그램입니까? 텍스트 상자 안에 텍스트를 명시 적으로 설정하기 위해 창 구조를 파헤 칠 수 있습니까 by their HWNDs? 시스템에 사용할 수있는 파일 입출력이 있습니까? 아마도 데이터베이스를 파고들 수 있을까요?

3

이렇게하지 마십시오. 클립 보드는 PROGRAMMER가 아니라 USER의 편의를 위해 존재합니다! 업데이트를 모니터링하는 프로그램을 포함하여 클립 보드를 (올바르게) 사용하려고하는 다른 프로그램에서 오류 및 충돌이 발생합니다.

는 "프로그램은 사용자로부터 없이 클립 보드의 우리 밖으로에 명시 적으로 지시를 데이터 를 전송해서는 안된다."
- 찰스 페 졸드, 프로그래밍 Windows 3.1, Microsoft Press에서 1992

관련 문제