Compare commits
No commits in common. "master" and "v1.0.2" have entirely different histories.
|
|
@ -361,5 +361,3 @@ MigrationBackup/
|
||||||
|
|
||||||
# Fody - auto-generated XML schema
|
# Fody - auto-generated XML schema
|
||||||
FodyWeavers.xsd
|
FodyWeavers.xsd
|
||||||
|
|
||||||
*.swp
|
|
||||||
|
|
|
||||||
26
README.md
26
README.md
|
|
@ -3,29 +3,9 @@
|
||||||
Useful for setups where the clipboard is not enough.
|
Useful for setups where the clipboard is not enough.
|
||||||
See [here](https://github.com/45Tatami/native-inserter) for an example of the receiving server side.
|
See [here](https://github.com/45Tatami/native-inserter) for an example of the receiving server side.
|
||||||
|
|
||||||
|
Requires Visual Studio 2019. Drop into VS, build x86 or x64 depending on which Textractor architecture you use.
|
||||||
|
Drop resulting dll into Textractor extension window.
|
||||||
|
|
||||||
Configuration done at runtime via interface.
|
Configuration done at runtime via interface.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Building
|
|
||||||
|
|
||||||
Requires Visual Studio 2019 or meson. Drop into VS, build x86 or x64 depending on which Textractor architecture you use.
|
|
||||||
Drop resulting dll into Textractor extension window.
|
|
||||||
|
|
||||||
### meson
|
|
||||||
|
|
||||||
```
|
|
||||||
meson setup build
|
|
||||||
ninja -Cbuild
|
|
||||||
```
|
|
||||||
|
|
||||||
Project includes example cross-compilation definition files for a mingw32 toolchain under `cross`.
|
|
||||||
|
|
||||||
|
|
||||||
```
|
|
||||||
# x86/32bit
|
|
||||||
meson setup --cross-file=cross/i686-w64-mingw32.txt build
|
|
||||||
|
|
||||||
# x86_64/64bit
|
|
||||||
meson setup --cross-file=cross/x86_64-w64-mingw32.txt build
|
|
||||||
```
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#include "Extension.h"
|
#include "extension.h"
|
||||||
|
|
||||||
bool ProcessSentence(std::wstring& sentence, SentenceInfo sentenceInfo);
|
bool ProcessSentence(std::wstring& sentence, SentenceInfo sentenceInfo);
|
||||||
|
|
||||||
|
|
@ -18,7 +18,7 @@ extern "C" __declspec(dllexport) wchar_t* OnNewSentence(wchar_t* sentence, const
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
std::wstring sentenceCopy(sentence);
|
std::wstring sentenceCopy(sentence);
|
||||||
auto oldSize = sentenceCopy.size();
|
int oldSize = sentenceCopy.size();
|
||||||
if (ProcessSentence(sentenceCopy, SentenceInfo{ sentenceInfo }))
|
if (ProcessSentence(sentenceCopy, SentenceInfo{ sentenceInfo }))
|
||||||
{
|
{
|
||||||
if (sentenceCopy.size() > oldSize) sentence = (wchar_t*)HeapReAlloc(GetProcessHeap(), HEAP_GENERATE_EXCEPTIONS, sentence, (sentenceCopy.size() + 1) * sizeof(wchar_t));
|
if (sentenceCopy.size() > oldSize) sentence = (wchar_t*)HeapReAlloc(GetProcessHeap(), HEAP_GENERATE_EXCEPTIONS, sentence, (sentenceCopy.size() + 1) * sizeof(wchar_t));
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
|
#include "extension.h"
|
||||||
#include "resource.h"
|
#include "resource.h"
|
||||||
#include "Extension.h"
|
|
||||||
|
|
||||||
#include <atomic>
|
#include <atomic>
|
||||||
#include <codecvt>
|
#include <codecvt>
|
||||||
|
|
@ -16,7 +16,6 @@
|
||||||
#include <ws2tcpip.h>
|
#include <ws2tcpip.h>
|
||||||
#include <strsafe.h>
|
#include <strsafe.h>
|
||||||
|
|
||||||
using std::filesystem::path;
|
|
||||||
using std::lock_guard;
|
using std::lock_guard;
|
||||||
using std::mutex;
|
using std::mutex;
|
||||||
using std::unique_lock;
|
using std::unique_lock;
|
||||||
|
|
@ -25,11 +24,9 @@ using std::wstring;
|
||||||
using std::wstring_convert;
|
using std::wstring_convert;
|
||||||
using std::codecvt_utf8_utf16;
|
using std::codecvt_utf8_utf16;
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
#pragma comment (lib, "Ws2_32.lib")
|
#pragma comment (lib, "Ws2_32.lib")
|
||||||
#pragma comment (lib, "Mswsock.lib")
|
#pragma comment (lib, "Mswsock.lib")
|
||||||
#pragma comment (lib, "AdvApi32.lib")
|
#pragma comment (lib, "AdvApi32.lib")
|
||||||
#endif
|
|
||||||
|
|
||||||
#define MSG_Q_CAP 10
|
#define MSG_Q_CAP 10
|
||||||
#define CONFIG_APP_NAME L"TCPSend"
|
#define CONFIG_APP_NAME L"TCPSend"
|
||||||
|
|
@ -91,7 +88,7 @@ void log(string const& msg)
|
||||||
// Freed on message handling
|
// Freed on message handling
|
||||||
char* buf = (char *) GlobalAlloc(GPTR, msg.length() + 1);
|
char* buf = (char *) GlobalAlloc(GPTR, msg.length() + 1);
|
||||||
msg.copy(buf, msg.length());
|
msg.copy(buf, msg.length());
|
||||||
PostMessage(win_hndl, WM_USR_LOG, (WPARAM) NULL, (LPARAM) buf);
|
PostMessage(win_hndl, WM_USR_LOG, NULL, (LPARAM) buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
void log(wstring const& msg)
|
void log(wstring const& msg)
|
||||||
|
|
@ -103,10 +100,10 @@ void log(wstring const& msg)
|
||||||
|
|
||||||
void toggle_want_connect()
|
void toggle_want_connect()
|
||||||
{
|
{
|
||||||
PostMessage(win_hndl, WM_USR_TOGGLE_CONNECT, (WPARAM) NULL, (LPARAM) NULL);
|
PostMessage(win_hndl, WM_USR_TOGGLE_CONNECT, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void save_config(path const& filepath, wstring const& remote, bool connect)
|
void save_config(wstring const& filepath, wstring const& remote, bool connect)
|
||||||
{
|
{
|
||||||
std::wofstream f{filepath, std::ios_base::trunc};
|
std::wofstream f{filepath, std::ios_base::trunc};
|
||||||
if (f.good()) {
|
if (f.good()) {
|
||||||
|
|
@ -260,11 +257,11 @@ INT_PTR CALLBACK DialogProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPara
|
||||||
|
|
||||||
if (want_connect) {
|
if (want_connect) {
|
||||||
SetDlgItemText(hWnd, IDC_BTN_SUBMIT, L"Disconnect");
|
SetDlgItemText(hWnd, IDC_BTN_SUBMIT, L"Disconnect");
|
||||||
SendMessage(edit, EM_SETREADONLY, TRUE, (LPARAM) NULL);
|
SendMessage(edit, EM_SETREADONLY, TRUE, NULL);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
SetDlgItemText(hWnd, IDC_BTN_SUBMIT, L"Connect");
|
SetDlgItemText(hWnd, IDC_BTN_SUBMIT, L"Connect");
|
||||||
SendMessage(edit, EM_SETREADONLY, FALSE, (LPARAM) NULL);
|
SendMessage(edit, EM_SETREADONLY, FALSE, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
save_config(config_file_path, remote, want_connect);
|
save_config(config_file_path, remote, want_connect);
|
||||||
|
|
@ -334,11 +331,11 @@ BOOL WINAPI DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved
|
||||||
|
|
||||||
GetCurrentDirectory(buf_sz, buf);
|
GetCurrentDirectory(buf_sz, buf);
|
||||||
|
|
||||||
config_file_path = path{wstring{buf}} / CONFIG_FILE_NAME;
|
config_file_path = std::filesystem::path{wstring{buf}} / CONFIG_FILE_NAME;
|
||||||
GlobalFree(buf);
|
GlobalFree(buf);
|
||||||
|
|
||||||
PostMessage(win_hndl, WM_USR_LOAD_CONFIG,
|
PostMessage(win_hndl, WM_USR_LOAD_CONFIG,
|
||||||
(WPARAM) NULL, (LPARAM) config_file_path.c_str());
|
NULL, (LPARAM) config_file_path.c_str());
|
||||||
|
|
||||||
// Start communication thread
|
// Start communication thread
|
||||||
comm_thread = CreateThread(NULL, 0, comm_loop, NULL, 0, NULL);
|
comm_thread = CreateThread(NULL, 0, comm_loop, NULL, 0, NULL);
|
||||||
|
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
[binaries]
|
|
||||||
c = 'i686-w64-mingw32-gcc'
|
|
||||||
cpp = 'i686-w64-mingw32-g++'
|
|
||||||
ar = 'i686-w64-mingw32-ar'
|
|
||||||
strip = 'i686-w64-mingw32-strip'
|
|
||||||
windres = 'i686-w64-mingw32-windres'
|
|
||||||
exe_wrapper = 'wine'
|
|
||||||
|
|
||||||
[host_machine]
|
|
||||||
system = 'windows'
|
|
||||||
cpu_family = 'x86'
|
|
||||||
cpu = 'i686'
|
|
||||||
endian = 'little'
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
[binaries]
|
|
||||||
c = 'x86_64-w64-mingw32-gcc'
|
|
||||||
cpp = 'x86_64-w64-mingw32-g++'
|
|
||||||
ar = 'x86_64-w64-mingw32-ar'
|
|
||||||
strip = 'x86_64-w64-mingw32-strip'
|
|
||||||
windres = 'x86_64-w64-mingw32-windres'
|
|
||||||
exe_wrapper = 'wine64'
|
|
||||||
|
|
||||||
[host_machine]
|
|
||||||
system = 'windows'
|
|
||||||
cpu_family = 'x86_64'
|
|
||||||
cpu = 'x86_64'
|
|
||||||
endian = 'little'
|
|
||||||
20
meson.build
20
meson.build
|
|
@ -1,20 +0,0 @@
|
||||||
project('Textractor-TCPSender', 'cpp',
|
|
||||||
default_options : ['cpp_std=c++17'])
|
|
||||||
|
|
||||||
add_project_arguments('-DUNICODE', language : 'cpp')
|
|
||||||
|
|
||||||
compiler = meson.get_compiler('cpp')
|
|
||||||
|
|
||||||
src = files(
|
|
||||||
'TCPSender/TCPSender.cpp',
|
|
||||||
'TCPSender/ExtensionImpl.cpp'
|
|
||||||
)
|
|
||||||
|
|
||||||
windows = import('windows')
|
|
||||||
src += windows.compile_resources('TCPSender/resource.rc')
|
|
||||||
|
|
||||||
deps = []
|
|
||||||
deps += compiler.find_library('ws2_32')
|
|
||||||
|
|
||||||
library('tcpsender', src,
|
|
||||||
dependencies : deps)
|
|
||||||
Loading…
Reference in New Issue