클립보드 텍스트를 검색하고 VBScript로 작업
4717 단어 VBScriptPowerShellC#
개요
VBScript를 사용하여 클립 보드에서 텍스트를 꺼내고 싶다는 이야기.
결론으로서는, Clipboard.GetText 메소드(System.Windows.Forms)로 클립보드로부터 텍스트를 꺼내 표준 출력에 내고, VBScript로 그것을 받는다고 하는 방법으로 생긴 것 같다.
2017.08.21 추가
vbs + C#과 달리 콘솔이 한순간 표시되어 버리는 단점은 있습니다만, vbs 단독판(내부에서 powershell 이용)을 만들었습니다.
Set exec = CreateObject("WScript.Shell").Exec("powershell.exe -sta -Command Add-Type -Assembly System.Windows.Forms; [System.Windows.Forms.Clipboard]::GetText()")
exec.StdIn.Close
WScript.Echo exec.StdOut.ReadAll
참고
기타
Hey, Scripting Guy! 클립보드에서 URL을 가져오고 브라우저에서 해당 웹 사이트를 여는 방법이 있습니까?은 Internet Explorer (COM)를 통해 클립 보드에서 텍스트를 얻는 방법을 설명합니다.
이 방법이라면 클립 보드에서 텍스트를 꺼내는 정도 때문에 매번 IE가 시작되기 때문에 무겁고,
↓의 팝업이 나오기 때문에 약간 맛있지 않다.
클립보드 → 표준 출력
콘솔 애플리케이션에서 다음 코드를 빌드합니다.
이번에는 ConsoleApplication1.exe라는 파일을 만들 수 있도록 빌드했다.
콘솔 앱에서 클립보드 사용에 대해 - 질문·상담이라면 MSN 상담 상자 에 쓰여진 대로, [STAThreadAttribute]를 Main 함수 앞에 넣지 않으면 움직이지 않는 것 같다.
Program.csusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms; //参照設定にも追加
namespace ConsoleApplication1
{
class Program
{
[STAThreadAttribute]//←デフォルトでは追加されないので注意
static void Main(string[] args)
{
string str = Clipboard.GetText();
Console.WriteLine(str);
}
}
}
표준 출력에서 꺼내기
ConsoleApplication1.exe와 동일한 폴더 (경로가있는 폴더)에 다음 스크립트 (test.vbs)
를 만들었다.
test.vbsDim wsh
Set wsh = CreateObject("WScript.Shell")
Dim exec
Set exec = wsh.Exec("ConsoleApplication1.exe")
str = exec.StdOut.ReadAll
WScript.Echo str
결과
test.vbs의 내용을 복사하고 test.vbs를 두 번 클릭하면 다음 팝업이 표시됩니다.
클립보드의 텍스트를 얻을 수 있는 것을 확인할 수 있었다.
비고
카피한 것보다 개행이 많은 생각이 든다(Console.WriteLine등의 영향이라고 생각한다)가, 우선 그대로 한다.
Reference
이 문제에 관하여(클립보드 텍스트를 검색하고 VBScript로 작업), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/int_main_void/items/27c5d250f24cbc6ca025
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
콘솔 애플리케이션에서 다음 코드를 빌드합니다.
이번에는 ConsoleApplication1.exe라는 파일을 만들 수 있도록 빌드했다.
콘솔 앱에서 클립보드 사용에 대해 - 질문·상담이라면 MSN 상담 상자 에 쓰여진 대로, [STAThreadAttribute]를 Main 함수 앞에 넣지 않으면 움직이지 않는 것 같다.
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms; //参照設定にも追加
namespace ConsoleApplication1
{
class Program
{
[STAThreadAttribute]//←デフォルトでは追加されないので注意
static void Main(string[] args)
{
string str = Clipboard.GetText();
Console.WriteLine(str);
}
}
}
표준 출력에서 꺼내기
ConsoleApplication1.exe와 동일한 폴더 (경로가있는 폴더)에 다음 스크립트 (test.vbs)
를 만들었다.
test.vbsDim wsh
Set wsh = CreateObject("WScript.Shell")
Dim exec
Set exec = wsh.Exec("ConsoleApplication1.exe")
str = exec.StdOut.ReadAll
WScript.Echo str
결과
test.vbs의 내용을 복사하고 test.vbs를 두 번 클릭하면 다음 팝업이 표시됩니다.
클립보드의 텍스트를 얻을 수 있는 것을 확인할 수 있었다.
비고
카피한 것보다 개행이 많은 생각이 든다(Console.WriteLine등의 영향이라고 생각한다)가, 우선 그대로 한다.
Reference
이 문제에 관하여(클립보드 텍스트를 검색하고 VBScript로 작업), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/int_main_void/items/27c5d250f24cbc6ca025
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Dim wsh
Set wsh = CreateObject("WScript.Shell")
Dim exec
Set exec = wsh.Exec("ConsoleApplication1.exe")
str = exec.StdOut.ReadAll
WScript.Echo str
test.vbs의 내용을 복사하고 test.vbs를 두 번 클릭하면 다음 팝업이 표시됩니다.
클립보드의 텍스트를 얻을 수 있는 것을 확인할 수 있었다.
비고
카피한 것보다 개행이 많은 생각이 든다(Console.WriteLine등의 영향이라고 생각한다)가, 우선 그대로 한다.
Reference
이 문제에 관하여(클립보드 텍스트를 검색하고 VBScript로 작업), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/int_main_void/items/27c5d250f24cbc6ca025
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(클립보드 텍스트를 검색하고 VBScript로 작업), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/int_main_void/items/27c5d250f24cbc6ca025텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)