jsm.standard
1.0.3
dotnet add package jsm.standard --version 1.0.3
NuGet\Install-Package jsm.standard -Version 1.0.3
<PackageReference Include="jsm.standard" Version="1.0.3" />
<PackageVersion Include="jsm.standard" Version="1.0.3" />
<PackageReference Include="jsm.standard" />
paket add jsm.standard --version 1.0.3
#r "nuget: jsm.standard, 1.0.3"
#:package jsm.standard@1.0.3
#addin nuget:?package=jsm.standard&version=1.0.3
#tool nuget:?package=jsm.standard&version=1.0.3
jsm.standard
자동화 및 봇 기능을 제공하는 .NET Standard 2.0 기반의 종합 라이브러리
마우스 제어, 화면 캡처, 이미지 매칭, 윈도우 관리, REST API 클라이언트, 이메일/SMS 발송, FTP/SFTP, 암호화, CSV 처리, 압축 등 다양한 자동화 기능을 하나의 패키지로 제공합니다.
✨ 주요 특징
- 🎯 완전한 .NET Standard 2.0 호환 - 모든 .NET 플랫폼에서 사용 가능
- 🚀 고성능 GPU 가속 - CUDA 및 OpenCL을 활용한 이미지 매칭
- 🔒 보안 강화 - AES, SEED, MD5 등 다양한 암호화 알고리즘 지원
- 📦 의존성 최소화 - .NET Standard 기본 라이브러리 활용
- 🛠️ 간편한 API - 직관적이고 사용하기 쉬운 메서드 제공
- 📝 JSON 기반 규칙 시스템 - 선언적 방식으로 자동화 작업 정의
📦 설치
.NET CLI
dotnet add package jsm.standard
Package Manager Console
Install-Package jsm.standard
PackageReference
<ItemGroup>
<PackageReference Include="jsm.standard" Version="1.0.3" />
</ItemGroup>
🚀 빠른 시작
마우스 제어
using jsm.standard.Hardware;
// 마우스를 특정 좌표로 이동
MouseHelper.MoveTo(100, 200);
// 부드러운 애니메이션 이동 (500ms 동안)
MouseHelper.MoveSmooth(500, 500, 500);
// 클릭 동작
MouseHelper.LeftClick();
MouseHelper.RightClick();
MouseHelper.DoubleClick();
화면 캡처
using jsm.standard.Hardware;
using System.Drawing;
// 전체 화면 캡처
Bitmap screenshot = ScreenHelper.CaptureScreen();
// 특정 영역 캡처
Rectangle region = new Rectangle(0, 0, 800, 600);
Bitmap regionScreenshot = ScreenHelper.CaptureScreen(region);
// 특정 윈도우 캡처
IntPtr windowHandle = WindowHelper.FindWindowByTitle("Notepad");
Bitmap windowScreenshot = ScreenHelper.CaptureWindow(windowHandle);
// 파일로 저장
screenshot.Save("screenshot.png");
REST API 호출
using jsm.standard.Http;
// 간단한 GET 요청
string result = REST_API.Get("https://api.example.com/users");
// JSResult로 받기 (타입 안전)
JSResult data = REST_API.Get_JSResult("https://api.example.com/user/1");
string name = data.GetStringValue("name");
int age = data.GetIntValue("age") ?? 0;
// POST 요청
string json = "{\"name\":\"test\",\"email\":\"test@example.com\"}";
string response = REST_API.Post("https://api.example.com/users", json);
// 비동기 방식
string result = await REST_API.GetAsync("https://api.example.com/users");
이미지 매칭
using jsm.standard.ImageProcessing;
// 이미지 검색
var matcher = new ImageMatcher();
var result = matcher.FindImage("button.png", threshold: 0.9);
if (result.Found)
{
Console.WriteLine($"이미지 발견: ({result.X}, {result.Y})");
MouseHelper.MoveTo(result.X, result.Y);
MouseHelper.LeftClick();
}
// GPU 가속 이미지 매칭 (CUDA/OpenCL)
var gpuMatcher = new GpuImageMatcher();
var gpuResult = await gpuMatcher.FindImageAsync("button.png", threshold: 0.9);
이메일 발송
using jsm.standard.Email;
// 간편한 이메일 발송 (메일 타입 자동 감지)
var result = await Email.SendMailEasyAsync(
"sender@gmail.com",
"password",
"recipient@example.com",
"제목",
"본문"
);
// 고급 옵션
var options = new EmailOptions
{
From = "sender@example.com",
To = new[] { "recipient1@example.com", "recipient2@example.com" },
Subject = "제목",
Body = "<h1>HTML 본문</h1>",
IsHtml = true,
Attachments = new[] { "file1.pdf", "file2.jpg" }
};
var result = await Email.SendMailAsync(options);
SMS 발송 (Aligo API)
using jsm.standard.SMS;
var options = new SmsOptions
{
ApiKey = "your_api_key",
UserId = "your_user_id",
Sender = "01012345678",
Receivers = new[] { "01011111111", "01022222222" },
Message = "테스트 메시지"
};
var result = await SMS.SendSmsAsync(options);
if (result.IsSuccess)
{
Console.WriteLine($"발송 성공: {result.MessageId}");
}
파일 전송 (FTP/SFTP)
using jsm.standard.FTP;
// FTP 업로드
await FTP.UploadFileAsync(
"ftp.example.com",
"username",
"password",
"/remote/path/file.txt",
"local/path/file.txt"
);
// SFTP 업로드
await SFTP.UploadFileAsync(
"sftp.example.com",
22,
"username",
"password",
"/remote/path/file.txt",
"local/path/file.txt"
);
CSV 처리
using jsm.standard.CSV;
// CSV 읽기
var data = CSV.Read_CSV<MyClass>("data.csv");
// CSV 쓰기
var items = new List<MyClass> { /* ... */ };
CSV.Write_CSV("output.csv", items);
압축/해제
using jsm.standard.Compress;
// 폴더 압축
Zip.Compression("source_folder", "output.zip");
// ZIP 파일 해제
Zip.Decompression("archive.zip", "destination_folder", overwrite: true);
암호화
using jsm.standard.Security;
using System.Text;
// AES-128 암호화
byte[] key = Encoding.UTF8.GetBytes("1234567890123456");
byte[] plainBytes = Encoding.UTF8.GetBytes("암호화할 텍스트");
byte[] encrypted = AES128.Encrypt(plainBytes, key);
byte[] decrypted = AES128.Decrypt(encrypted, key);
// MD5 해시
string hash = MD5.GetHash("text");
byte[] hashBytes = MD5.GetHashBytes(plainBytes);
규칙 파일 실행
JSON 기반 규칙 파일(rule.json)을 생성하여 복잡한 자동화 작업을 선언적으로 정의할 수 있습니다:
{
"version": "1.0.0",
"name": "기본 예제",
"variables": {
"targetX": 500,
"targetY": 300
},
"actions": [
{
"type": "move",
"x": "{{targetX}}",
"y": "{{targetY}}"
},
{
"type": "click",
"button": "left"
},
{
"type": "findImage",
"imagePath": "button.png",
"threshold": 0.9,
"moveToFound": true,
"clickOnFound": true
}
]
}
코드에서 실행:
using jsm.standard.Rules;
var executor = new RuleExecutor();
await executor.ExecuteRuleFileAsync("rule.json");
📚 주요 네임스페이스 및 클래스
jsm.standard.Hardware
하드웨어 제어 기능
MouseHelper- 마우스 이동, 클릭, 드래그ScreenHelper- 화면 캡처 (전체/영역/윈도우)WindowHelper- 윈도우 찾기, 관리MonitorHelper- 다중 모니터 정보 및 관리
jsm.standard.Http
HTTP/REST API 클라이언트
REST_API- 간편한 REST API 호출 (정적 메서드)RestApiClient- 타입 안전한 REST API 클라이언트JSResult/JSResults- 데이터베이스 결과 형식 지원
jsm.standard.ImageProcessing
이미지 처리 및 매칭
ImageMatcher- CPU 기반 이미지 매칭 엔진GpuImageMatcher- GPU 가속 이미지 매칭 (CUDA/OpenCL)ImageProcessor- 이미지 처리 유틸리티
jsm.standard.Actions
규칙 시스템용 액션 클래스
Actions.Mouse.*- 마우스 관련 액션Actions.Capture.*- 캡처 관련 액션Actions.Window.*- 윈도우 관련 액션Actions.Monitor.*- 모니터 관련 액션Actions.Find.*- 찾기 관련 액션Actions.Control.*- 제어 관련 액션 (조건, 반복, 시퀀스)
jsm.standard.Email
이메일 발송
Email- 이메일 발송 기능 (SMTP)
jsm.standard.SMS
SMS 발송
SMS- SMS 발송 기능 (Aligo API)
jsm.standard.FTP
파일 전송
FTP- FTP 클라이언트SFTP- SFTP 클라이언트
jsm.standard.Security
보안 및 암호화
AES128- AES-128 암호화/복호화MD5- MD5 해시CRC32- CRC32 체크섬SEED- SEED 암호화 알고리즘Userpermit- 하드웨어 기반 사용자 허가증
jsm.standard.CSV
CSV 파일 처리
CSV- CSV 파일 읽기/쓰기
jsm.standard.Compress
압축/해제
Zip- ZIP 파일 압축/해제 (.NET Standard 2.0 호환)
jsm.standard.Rules
규칙 실행 시스템
RuleExecutor- 규칙 파일 실행기ActionDefinition- 액션 정의
🔧 요구사항
- .NET Standard 2.0 이상
- Windows 운영체제 (Windows API 사용 기능의 경우)
- 마우스 제어, 화면 캡처, 윈도우 관리 기능은 Windows 전용
- HTTP, 이메일, SMS, FTP/SFTP, 암호화, CSV, 압축 기능은 크로스 플랫폼
📦 의존성
MailKit(4.8.0) - 이메일 발송MimeKit(4.8.0) - 이메일 MIME 처리Microsoft.Win32.Registry(5.0.0) - 레지스트리 접근QRCoder(1.6.0) - QR 코드 생성SSH.NET(2023.0.0) - SFTP 클라이언트System.Drawing.Common(8.0.0) - 이미지 처리System.Text.Json(9.0.10) - JSON 처리
참고: ZIP 압축/해제 기능은 .NET Standard 2.0의
System.IO.Compression을 사용하므로 추가 의존성이 없습니다.
🎯 사용 사례
- 자동화 봇: 반복적인 작업 자동화
- 테스트 자동화: UI 테스트 자동화
- 데이터 수집: 웹 스크래핑 및 데이터 수집
- 모니터링: 화면 모니터링 및 알림
- 파일 관리: FTP/SFTP를 통한 파일 관리
- 통신: 이메일/SMS 발송 및 REST API 호출
- 보안: 데이터 암호화 및 보안 처리
🚀 성능 최적화
GPU 가속 이미지 매칭
대량의 이미지 검색이 필요한 경우 GPU 가속을 사용하세요:
var gpuMatcher = new GpuImageMatcher();
// CUDA 또는 OpenCL을 자동으로 감지하여 사용
var result = await gpuMatcher.FindImageAsync("template.png", threshold: 0.9);
비동기 메서드 활용
I/O 작업은 비동기 메서드를 사용하여 성능을 향상시키세요:
// 동기 방식 (블로킹)
string result = REST_API.Get("https://api.example.com/data");
// 비동기 방식 (논블로킹, 권장)
string result = await REST_API.GetAsync("https://api.example.com/data");
📝 라이선스
MIT License
🤝 기여하기
버그 리포트, 기능 제안, Pull Request를 환영합니다!
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
📞 지원
- GitHub Issues: 문제 리포트 및 기능 제안
- NuGet 패키지: jsm.standard on NuGet
📄 변경 이력
1.0.3
- .NET Standard 2.0 호환성 개선
ICSharpCode.SharpZipLib의존성 제거 (System.IO.Compression 사용)- README 개선
1.0.2
- 초기 안정 버전
jsm.standard - 자동화를 위한 강력한 도구 모음
Made with ❤️ by Berrysoft
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- MailKit (>= 4.8.0)
- Microsoft.Win32.Registry (>= 5.0.0)
- MimeKit (>= 4.8.0)
- QRCoder (>= 1.6.0)
- SSH.NET (>= 2023.0.0)
- System.Drawing.Common (>= 8.0.0)
- System.Text.Json (>= 9.0.10)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on jsm.standard:
| Package | Downloads |
|---|---|
|
jsm.extension
jsm.standard의 확장 라이브러리입니다. SignalR 서버/클라이언트, 통화 기능(VoiceCall) 등 .NET 8.0 기반의 고급 기능을 제공합니다. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.3 | 295 | 11/13/2025 |