Download mirc 7 53 0 0 0
Author: b | 2025-04-24
Sugarfoot Rag Hank Garland Standard tuning 1/2. 7 0 7 0 7 0 7 0 7 0 7 0 6 0 7 0 7 0 7 0 7 0 7 0 7 0 6 0 7 0 7 0 7 0 7 0 7 0 7 0 7 0 6 0 7 0 7 0 7 0 7 0 57 INTRO sl. sl. 1 2 sl. sl. 5 575 757 3 353 53 5 0 75 64 7467 4 7 Super Bomberman 2 battle mode online for mIRC and AdIRC irc clients. mIRC-Scripters/Sbm’s past year of commit activity mIRC Script 0 1 0 0 Updated
0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 7 6 0 0 0 0 0 0 0 0 0 0 6 3 0 0
Break; } return 0;}class Win : public CWinThread {public: Win() {}; ~Win() {};private: HACCEL Table;public: virtual int Run() { MSG Msg; while (GetMessage(&Msg, NULL, 0, 0)) { if (!TranslateAccelerator(Msg.hwnd, Table, &Msg)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } } return 0; }; virtual BOOL InitInstance() { WNDCLASSEX WinC; WinC.hInstance = NULL; WinC.lpszClassName = WinClass; WinC.lpfnWndProc = WinParser; WinC.style = CS_HREDRAW | CS_VREDRAW; WinC.hIcon = LoadIcon(NULL, IDI_APPLICATION); WinC.hIconSm = LoadIcon(NULL, IDI_APPLICATION); WinC.hCursor = LoadCursor(NULL, IDC_ARROW); WinC.lpszMenuName = NULL; WinC.cbClsExtra = 0; WinC.cbWndExtra = 0; WinC.hbrBackground = (HBRUSH)COLOR_BACKGROUND; WinC.cbSize = sizeof(WNDCLASSEX); RegisterClassEx(&WinC); HWND Handle = CreateWindow(WinClass, _T(""), WS_DISABLED, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, NULL, NULL); if (Handle) { UpdateWindow(Handle); Table = LoadAccelerators(NULL, WinClass); return true; } return false; };};#include "Win.h"Win* x;EXTERN_C int WINAPI UnloadDll(int TimeOut) { //x->ExitInstance(); //delete x; return mIRC->Unload(TimeOut);}EXTERN_C void WINAPI LoadDll(LoadInfo *Load) { Load->Keep = 1; // stay loaded mIRC = new Dll; mIRC->Load(Load->Handle); x = new Win; x->InitInstance();}Func(Start) { x->CreateThread(CREATE_SUSPENDED) ; x->m_bAutoDelete = true ; x->ResumeThread() ; return 1;}Joined: Jan 2011Posts: 11Pikka birdOPPikka birdJoined: Jan 2011Posts: 11OK, so I've hooked into the mIRC WndProc, but now CreateWindowEx seems to always fail (message box informs me so, see code below).#include #define MYMENU_EXIT (WM_APP + 101)#define MYMENU_MESSAGEBOX (WM_APP + 102) #define MY_MSGLOOP (WM_USER+900)// WndProc for the new windowLRESULT CALLBACK DLLWindowProc (HWND, UINT, WPARAM, LPARAM);static HINSTANCE dllInstance;static HWND mIRC_window;static WNDPROC mWndProc;typedef struct { DWORD mVersion; HWND mHwnd; BOOL mKeep; BOOL mUnicode;} LOADINFO;void __stdcall LoadDll(LOADINFO*);int __stdcall UnloadDll(int);int __stdcall UnloadDll(int mTimeout) { if (mTimeout == 0) { /* user called /dll -u (or mIRC is shutting down) */ /* Remove window hook */ SetWindowLong(mIRC_window, GWL_WNDPROC, (LONG)mWndProc); } return 0; // keep the dll loaded}void __stdcall LoadDLL(LOADINFO *load) { load->mKeep = TRUE; // setup window subclass to hook the dll window event loop mIRC_window = load->mHwnd; mWndProc = (WNDPROC)SetWindowLong(mIRC_window, GWL_WNDPROC, (LONG)DLLWindowProc); }// Create our window's MenuHMENU CreateDLLWindowMenu(){ HMENU hMenu; hMenu = CreateMenu(); HMENU hMenuPopup; if(hMenu==NULL) return FALSE; hMenuPopup = CreatePopupMenu(); AppendMenu (hMenuPopup, MF_STRING, MYMENU_EXIT, TEXT("Exit")); AppendMenu (hMenu, MF_POPUP, (UINT_PTR) hMenuPopup, TEXT("File")); hMenuPopup = CreatePopupMenu(); AppendMenu (hMenuPopup, MF_STRING,MYMENU_MESSAGEBOX, TEXT("MessageBox")); AppendMenu (hMenu, MF_POPUP, (UINT_PTR) hMenuPopup, TEXT("Test")); return hMenu;}// Our new window's procLRESULT CALLBACK DLLWindowProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){ if (message == MY_MSGLOOP) { switch (message) { case WM_COMMAND: switch(wParam) { case MYMENU_EXIT: SendMessage(hwnd, WM_CLOSE, 0, 0); break; case MYMENU_MESSAGEBOX: MessageBox(hwnd, L"Test", L"MessageBox",MB_OK); break; } break; case WM_DESTROY: PostQuitMessage (0); break; default: return DefWindowProc (hwnd, message, wParam, lParam); } return 0; } /* Send the rest to mIRC */ return CallWindowProc(mWndProc, hwnd, message, wParam, lParam);}BOOL APIENTRY DllMain(HINSTANCE hModule, DWORD ul_reason_for_call, LPVOID lpReserved){ dllInstance = hModule; return TRUE;}int __stdcall dllname(HWND mWnd, HWND aWnd, char *data, char *parms, BOOL show, BOOL nopause) { wchar_t szFileName[MAX_PATH]; GetModuleFileName((HMODULE)dllInstance, szFileName, MAX_PATH); MessageBox(aWnd, szFileName, L"This DLL is:", MB_OK | MB_ICONINFORMATION); lstrcpyA(data, Your processing from there to run mIRC's runloop along. Check MSDN on how to either subclass a window or hook into a windowproc.Thanks, I made a quick look-up for 'wndproc hook' and google returned lots of promising results. I suppose I'll find enough information/examples on the subject. Looks like threading is a bit of trouble when mixed with IRC clients. I've had similar problems with Xchat. Hopefully hooking into mIRC's WndProc will save me the trouble.Using "reinterpret_cast" smells fishy in general. Is this your code, or was it copied? You should probably stick to straight C.Why are you passing a string literal as your thread parameter? Seems pointless... reinterpret_cast was part of the copied code. Likewise, the CreateThread() call was copied as is. I guess the author of the code preferred to set the title of the window by passing it to CreateThread().Joined: Oct 2003Posts: 3,641Hoopy froodHoopy froodJoined: Oct 2003Posts: 3,641Thanks, I made a quick look-up for 'wndproc hook' and google returned lots of promising results. I suppose I'll find enough information/examples on the subject. Looks like threading is a bit of trouble when mixed with IRC clients. I've had similar problems with Xchat. Hopefully hooking into mIRC's WndProc will save me the trouble.Note that Tcl4mIRC does this. The source is available in the download, if you want to see how it's done. Beware: Tcl4mIRC also uses threads, but this is for specific threading functionality-- most of the code is run through a single threaded message loop. So ignore the CreateThread call if you do happen to look at the source.- argv[0] on EFnet #mIRC- "Life is a pointer to an integer without a cast"Joined: Mar 2008Posts: 27Ameglian cowAmeglian cowJoined: Mar 2008Posts: 27i was going into similar problem, i used to create the window and then it froze, then i realized it was a threading issue, anyway here is how it worked for me#include #include #include #include #define WinClass _T("UrWinClass")LRESULT WINAPI WinParser(HWND handle, UINT message, WPARAM wParam, LPARAM parameters) { switch (message) { default: return DefWindowProc(handle, message, wParam, parameters); case WM_COMMAND: break; case WM_PAINT: break; case WM_DESTROY: break; case WM_COPYDATA: break; } return 0;}class Win : public CWinThread {public: Win() {}; ~Win() {};private: HACCEL Table;public: virtual int Run() { MSG Msg; while (GetMessage(&Msg, NULL, 0, 0)) { if (!TranslateAccelerator(Msg.hwnd, Table, &Msg)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } } return 0; }; virtual BOOL InitInstance() { WNDCLASSEX WinC; WinC.hInstance = NULL; WinC.lpszClassName = WinClass; WinC.lpfnWndProc = WinParser; WinC.style = CS_HREDRAW | CS_VREDRAW; WinC.hIcon = LoadIcon(NULL, IDI_APPLICATION); WinC.hIconSm = LoadIcon(NULL, IDI_APPLICATION); WinC.hCursor = LoadCursor(NULL, IDC_ARROW); WinC.lpszMenuName = NULL; WinC.cbClsExtra = 0; WinC.cbWndExtra = 0; WinC.hbrBackground = (HBRUSH)COLOR_BACKGROUND; WinC.cbSize = sizeof(WNDCLASSEX); RegisterClassEx(&WinC); HWND Handle = CreateWindow(WinClass, _T(""), WS_DISABLED, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, NULL, NULL); if (Handle) { UpdateWindow(Handle); Table = LoadAccelerators(NULL, WinClass); return true; } return false; };};#include "Win.h"Win* x;EXTERN_C int WINAPI UnloadDll(int TimeOut) { //x->ExitInstance(); //delete x; return mIRC->Unload(TimeOut);}EXTERN_C void WINAPI LoadDll(LoadInfo *Load) { Load->Keep = 1; // stay loaded mIRC = new Dll; mIRC->Load(Load->Handle); x = new Win; x->InitInstance();}Func(Start) { x->CreateThread(CREATE_SUSPENDED)SILKYPIX Developer Studio Pro 7 0 0 0 0 0 0 0 0 0 0 0
MIRC, it should be in the hidden tray icon area, and you should see the tip.Joined: Jan 2004Posts: 1,361Hoopy froodOPHoopy froodJoined: Jan 2004Posts: 1,361That does not seem to be the issue here. If you are seeing a "3" in "main", this means that on exit, mIRC thinks it is minimized and is saving "3" to indicate that.While mIRC is still open on the desktop I check the value in mIRC.ini and it is '3'. It is only updated to '0' when I close mIRC. When restarting it fails to write this '0'.Right-click on the taskbar, open "TaskBar Settings", and in "Notification area", DISABLE "show all icons in the notification area". Scroll down the list to where "mIRC" is and turn it OFF.The settings are not nested and labeled as you have described. Are you describing Windows 10? Or has this whole page changed in this WIndows 11 build? Regardless, I toggled all combination of controls and in every case the tip is shown.Joined: Dec 2002Posts: 5,525Hoopy froodHoopy froodJoined: Dec 2002Posts: 5,525hile mIRC is still open on the desktop I check the value in mIRC.ini and it is '3'. It is only updated to '0' when I close mIRC. When restarting it fails to write this '0'.Thanks for confirming. So this is the same issue we've seen in the past where, for some users, Windows is force-closing mIRC before it has a chance to finish updating mirc.ini.The settings are not nested and labeled as you have described. Are you describing Windows 10? Or has this whole page changed in this WIndows 11 build? Regardless, I toggled all combination of controls and in every case the tip is shown.Yes, I was testing in Windows 10 in this case. But the notifcation settings are more or less the same in Windows 11.My copy of Windows 11 found another update and it is now the same as your version. I am seeing the same issue as you in this version of Windows 11.After spending the last few hours testing it out, it looks like the latest Windows 11 update has broken all of the standard methods that are widely used to get information about the tray area. mIRC actually has four different implementations for this - each using different APIs. It was using the simplest method, which previously worked on all versions of Windows. None of the four implementations work on the latest Windows. Sugarfoot Rag Hank Garland Standard tuning 1/2. 7 0 7 0 7 0 7 0 7 0 7 0 6 0 7 0 7 0 7 0 7 0 7 0 7 0 6 0 7 0 7 0 7 0 7 0 7 0 7 0 7 0 6 0 7 0 7 0 7 0 7 0 57 INTRO sl. sl. 1 2 sl. sl. 5 575 757 3 353 53 5 0 75 64 7467 4 7Portable XAMPP -0 / -0 / -0 / -0 / 7
OPPikka birdJoined: Jan 2011Posts: 11Hi,I'm fairly new to win32 programming. I've been trying to create a window from within my DLL (don't ask) and I've had limited success so far. I've followed several tutorials and read many discussion forums but no matter what I do, my code seems to always cause mIRC to crash. The window creation code below is something I found in one of the tutorials I've read with very little modifications by me (variable names etc).#include #define MYMENU_EXIT (WM_APP + 101)#define MYMENU_MESSAGEBOX (WM_APP + 102) // WndProc for the new windowLRESULT CALLBACK DLLWindowProc (HWND, UINT, WPARAM, LPARAM);HINSTANCE dllInstance;HWND mIRC_window;typedef struct { DWORD mVersion; HWND mHwnd; BOOL mKeep; BOOL mUnicode;} LOADINFO;void __stdcall LoadDll(LOADINFO*);int __stdcall UnloadDll(int);int __stdcall UnloadDll(int mTimeout) { return 0; // keep the dll loaded}void __stdcall LoadDLL(LOADINFO *load) { load->mKeep = TRUE;}// Register our window's ClassBOOL RegisterDLLWindowClass(wchar_t szClassName[]){ WNDCLASSEX wc; wc.hInstance = dllInstance; wc.lpszClassName = (LPCWSTR)L"DLLWindowClass"; wc.lpszClassName = (LPCWSTR)szClassName; wc.lpfnWndProc = DLLWindowProc; wc.style = CS_DBLCLKS; wc.cbSize = sizeof (WNDCLASSEX); wc.hIcon = LoadIcon (NULL, IDI_APPLICATION); wc.hIconSm = LoadIcon (NULL, IDI_APPLICATION); wc.hCursor = LoadCursor (NULL, IDC_ARROW); wc.lpszMenuName = NULL; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hbrBackground = (HBRUSH) COLOR_BACKGROUND; if (!RegisterClassEx (&wc)) return 0;}// Creating our window's MenuHMENU CreateDLLWindowMenu(){ HMENU hMenu; hMenu = CreateMenu(); HMENU hMenuPopup; if(hMenu==NULL) return FALSE; hMenuPopup = CreatePopupMenu(); AppendMenu (hMenuPopup, MF_STRING, MYMENU_EXIT, TEXT("Exit")); AppendMenu (hMenu, MF_POPUP, (UINT_PTR) hMenuPopup, TEXT("File")); hMenuPopup = CreatePopupMenu(); AppendMenu (hMenuPopup, MF_STRING,MYMENU_MESSAGEBOX, TEXT("MessageBox")); AppendMenu (hMenu, MF_POPUP, (UINT_PTR) hMenuPopup, TEXT("Test")); return hMenu;}// The new threadDWORD WINAPI ThreadProc( LPVOID lpParam ){ MSG messages; wchar_t *pString = reinterpret_cast (lpParam); HMENU hMenu = CreateDLLWindowMenu(); RegisterDLLWindowClass(L"DLLWindowClass"); HWND hwnd = CreateWindowEx (0, L"DLLWindowClass", pString, WS_EX_PALETTEWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 400, 300, mIRC_window, hMenu, dllInstance, NULL ); ShowWindow (hwnd, SW_SHOWNORMAL); while (GetMessage (&messages, NULL, 0, 0)) { TranslateMessage(&messages); DispatchMessage(&messages); } return 1;}// Our new window's procLRESULT CALLBACK DLLWindowProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){ switch (message) { case WM_COMMAND: switch(wParam) { case MYMENU_EXIT: SendMessage(hwnd, WM_CLOSE, 0, 0); break; case MYMENU_MESSAGEBOX: MessageBox(hwnd, L"Test", L"MessageBox",MB_OK); break; } break; case WM_DESTROY: PostQuitMessage (0); break; default: return DefWindowProc (hwnd, message, wParam, lParam); } return 0;}BOOL APIENTRY DllMain( HINSTANCE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ){ dllInstance = hModule; return TRUE;}int __stdcall dllname(HWND mWnd, HWND aWnd, char *data, char *parms, BOOL show, BOOL nopause) { wchar_t szFileName[MAX_PATH]; GetModuleFileName((HMODULE)dllInstance, szFileName, MAX_PATH); MessageBox(aWnd, szFileName, L"This DLL is:", MB_OK | MB_ICONINFORMATION); lstrcpyA(data, "yay"); return 3;}int __stdcall window(HWND mWnd, HWND aWnd, char *data, char *parms, BOOL show, BOOL nopause) { mIRC_window = mWnd; HANDLE hThread = CreateThread(0, NULL, ThreadProc, (LPVOID)L"Window Title", NULL, NULL); if (hThread) { lstrcpyA(data, "Thread (and window) created!"); } else { lstrcpyA(data, "Thread creation failed!"); } return 3;}As you can see, the code above creates a new thread for the window, which I'm assuming is the saner way of doing this. I tried creating my window without using a new thread and the result wasn't really different (mIRC crashed).Most of my attempts = no window appears + mIRC crashesIf I'm lucky = window appears, but mIRC crashes shortly after that (the window appears because I would ; x->m_bAutoDelete = true ; x->ResumeThread() ; return 1;}Joined: Jan 2011Posts: 11Pikka birdOPPikka birdJoined: Jan 2011Posts: 11OK, so I've hooked into the mIRC WndProc, but now CreateWindowEx seems to always fail (message box informs me so, see code below).#include #define MYMENU_EXIT (WM_APP + 101)#define MYMENU_MESSAGEBOX (WM_APP + 102) #define MY_MSGLOOP (WM_USER+900)// WndProc for the new windowLRESULT CALLBACK DLLWindowProc (HWND, UINT, WPARAM, LPARAM);static HINSTANCE dllInstance;static HWND mIRC_window;static WNDPROC mWndProc;typedef struct { DWORD mVersion; HWND mHwnd; BOOL mKeep; BOOL mUnicode;} LOADINFO;void __stdcall LoadDll(LOADINFO*);int __stdcall UnloadDll(int);int __stdcall UnloadDll(int mTimeout) { if (mTimeout == 0) { /* user called /dll -u (or mIRC is shutting down) */ /* Remove window hook */ SetWindowLong(mIRC_window, GWL_WNDPROC, (LONG)mWndProc); } return 0; // keep the dll loaded}void __stdcall LoadDLL(LOADINFO *load) { load->mKeep = TRUE; // setup window subclass to hook the dll window event loop mIRC_window = load->mHwnd; mWndProc = (WNDPROC)SetWindowLong(mIRC_window, GWL_WNDPROC, (LONG)DLLWindowProc); }// Create our window's MenuHMENU CreateDLLWindowMenu(){ HMENU hMenu; hMenu = CreateMenu(); HMENU hMenuPopup; if(hMenu==NULL) return FALSE; hMenuPopup = CreatePopupMenu(); AppendMenu (hMenuPopup, MF_STRING, MYMENU_EXIT, TEXT("Exit")); AppendMenu (hMenu, MF_POPUP, (UINT_PTR) hMenuPopup, TEXT("File")); hMenuPopup = CreatePopupMenu(); AppendMenu (hMenuPopup, MF_STRING,MYMENU_MESSAGEBOX, TEXT("MessageBox")); AppendMenu (hMenu, MF_POPUP, (UINT_PTR) hMenuPopup, TEXT("Test")); return hMenu;}// Our new window's procLRESULT CALLBACK DLLWindowProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){ if (message == MY_MSGLOOP) { switch (message) { case WM_COMMAND: switch(wParam) { case MYMENU_EXIT: SendMessage(hwnd, WM_CLOSE, 0, 0); break; case MYMENU_MESSAGEBOX: MessageBox(hwnd, L"Test", L"MessageBox",MB_OK); break; } break; case WM_DESTROY: PostQuitMessage (0); break; default: return DefWindowProc (hwnd, message, wParam, lParam); } return 0; } /* Send the rest to mIRC */ return CallWindowProc(mWndProc, hwnd, message, wParam, lParam);}BOOL APIENTRY DllMain(HINSTANCE hModule, DWORD ul_reason_for_call, LPVOID lpReserved){ dllInstance = hModule; return TRUE;}int __stdcall dllname(HWND mWnd, HWND aWnd, char *data, char *parms, BOOL show, BOOL nopause) { wchar_t szFileName[MAX_PATH]; GetModuleFileName((HMODULE)dllInstance, szFileName, MAX_PATH); MessageBox(aWnd, szFileName, L"This DLL is:", MB_OK | MB_ICONINFORMATION); lstrcpyA(data, "yay"); return 3;}int __stdcall window(HWND mWnd, HWND aWnd, char *data, char *parms, BOOL show, BOOL nopause) { HMENU hMenu = CreateDLLWindowMenu(); WNDCLASSEX wc; wc.hInstance = dllInstance; wc.lpszClassName = (LPCWSTR)L"DLLWindowClass"; wc.lpfnWndProc = DLLWindowProc; wc.style = CS_DBLCLKS; wc.cbSize = sizeof (WNDCLASSEX); wc.hIcon = LoadIcon (NULL, IDI_APPLICATION); wc.hIconSm = LoadIcon (NULL, IDI_APPLICATION); wc.hCursor = LoadCursor (NULL, IDC_ARROW); wc.lpszMenuName = NULL; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hbrBackground = (HBRUSH) COLOR_BACKGROUND; if (!RegisterClassEx (&wc)) { MessageBox(mIRC_window, L"Failed to register window class!", L"Info", MB_OK | MB_ICONINFORMATION); //return 1; } HWND hwnd = CreateWindowEx (0, L"DLLWindowClass", L"Window Title", WS_EX_PALETTEWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 400, 300, mIRC_window, hMenu, dllInstance, NULL ); if (!hwnd) { MessageBox(mIRC_window, L"Failed to create window!", L"Info", MB_OK | MB_ICONINFORMATION); //return 1; } UpdateWindow(hwnd); // possibly unnecessary ShowWindow (hwnd, SW_SHOWNORMAL); /* the while loop below would obviously block, but this function has to return to let mirc know what we want to do, so how do I dispatch messages to my message loop without creating a different thread? (code commented for now) while (1) { PostMessage(mIRC_window, MY_MSGLOOP, 0, 0); Sleep(1); } */ lstrcpyA(data, "meh"); return 3;}Any help is greatly appreciated. Also, 7ramy, I couldn't compile your code. What language is this written in? The Func(start) atXAMPP -0 / -0 / -0 / -0 / -0 - Download
Initializing a window. you could just return 1;- argv[0] on EFnet #mIRC- "Life is a pointer to an integer without a cast"Joined: Jan 2011Posts: 11Pikka birdOPPikka birdJoined: Jan 2011Posts: 11I've followed your suggestions but CreateWindowEx() still fails. GetLastError() returns 0, which isn't very helpful. As to your question, I was referring to the integer that EVERY function has to return (as per the mIRC help file) so that mIRC knows whether we want to halt processing, return the data to a $dll call, continue processing, etc. My code is below (changed slightly as I don't use unicode now):dll.h:#ifndef _DLL_H_#define _DLL_H_#include #define DLLIMPORT __declspec (dllexport) int __stdcall#define MYMENU_EXIT (WM_APP + 101)#define MYMENU_MESSAGEBOX (WM_APP + 102) void __stdcall LoadDll(LOADINFO*);int __stdcall UnloadDll(int);DLLIMPORT HelloWorld (HWND mWnd, HWND aWnd, char *data, char *parms, BOOL show, BOOL nopause);DLLIMPORT dllname (HWND mWnd, HWND aWnd, char *data, char *parms, BOOL show, BOOL nopause);DLLIMPORT window(HWND mWnd, HWND aWnd, char *data, char *parms, BOOL show, BOOL nopause);#endif /* _DLL_H_ */And dllmain.c:#include "dll.h"#include #include // WndProc for the new windowLRESULT CALLBACK DLLWindowProc (HWND, UINT, WPARAM, LPARAM);static HINSTANCE dllInstance;static HWND mIRC_window;static WNDPROC mWndProc;static HWND myHwnd;typedef struct { DWORD mVersion; HWND mHwnd; BOOL mKeep; BOOL mUnicode;} LOADINFO;int __stdcall UnloadDll(int mTimeout) { if (mTimeout == 0) { /* user called /dll -u (or mIRC is shutting down) */ /* Remove window hook */ SetWindowLong(mIRC_window, GWL_WNDPROC, (LONG)mWndProc); } return 0; // keep the dll loaded}void __stdcall LoadDLL(LOADINFO *load) { load->mKeep = TRUE; // setup window subclass to hook the dll window event loop mIRC_window = load->mHwnd; mWndProc = (WNDPROC)SetWindowLong(mIRC_window, GWL_WNDPROC, (LONG)DLLWindowProc); }// /dll mydll.dll HelloWorld works as expectedDLLIMPORT HelloWorld (HWND mWnd, HWND aWnd, char *data, char *parms, BOOL show, BOOL nopause){ MessageBox (0, "Hello World from DLL!\n", "Hi", MB_ICONINFORMATION); return 1;}// this one works tooDLLIMPORT dllname (HWND mWnd, HWND aWnd, char *data, char *parms, BOOL show, BOOL nopause){ char szFileName[MAX_PATH]; GetModuleFileName((HMODULE)dllInstance, szFileName, MAX_PATH); MessageBox(aWnd, szFileName, "This DLL is:", MB_OK | MB_ICONINFORMATION); lstrcpyA(data, "yay"); return 3;}// Create our window's MenuHMENU CreateDLLWindowMenu(){ HMENU hMenu; hMenu = CreateMenu(); HMENU hMenuPopup; if(hMenu==NULL) return FALSE; hMenuPopup = CreatePopupMenu(); AppendMenu (hMenuPopup, MF_STRING, MYMENU_EXIT, TEXT("Exit")); AppendMenu (hMenu, MF_POPUP, (UINT_PTR) hMenuPopup, TEXT("File")); hMenuPopup = CreatePopupMenu(); AppendMenu (hMenuPopup, MF_STRING,MYMENU_MESSAGEBOX, TEXT("MessageBox")); AppendMenu (hMenu, MF_POPUP, (UINT_PTR) hMenuPopup, TEXT("Test")); return hMenu;}// this one fails at CreateWindowEx()DLLIMPORT window(HWND mWnd, HWND aWnd, char *data, char *parms, BOOL show, BOOL nopause) { HMENU hMenu = CreateDLLWindowMenu(); WNDCLASSEX wc; wc.hInstance = dllInstance; wc.lpszClassName = "DLLWindowClass"; wc.lpfnWndProc = DLLWindowProc; wc.style = CS_DBLCLKS; wc.cbSize = sizeof (WNDCLASSEX); wc.hIcon = LoadIcon (NULL, IDI_APPLICATION); wc.hIconSm = LoadIcon (NULL, IDI_APPLICATION); wc.hCursor = LoadCursor (NULL, IDC_ARROW); wc.lpszMenuName = NULL; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hbrBackground = (HBRUSH) COLOR_BACKGROUND; if (!RegisterClassEx (&wc)) { MessageBox(mIRC_window, "Failed to register window class!", "Info", MB_OK | MB_ICONINFORMATION); //return 1; } myHwnd = CreateWindowEx (0, "DLLWindowClass", "Window Title", WS_EX_PALETTEWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 400, 300, mIRC_window, hMenu, dllInstance, NULL ); if (myHwnd == NULL) { DWORD Error = GetLastError(); char ErrorBuffer[ 1024 ]; wsprintf( ErrorBuffer, "Error creating window. Error code, decimal %d, hexadecimal %X.", Error, Error ); MessageBox(mIRC_window, ErrorBuffer, "Error", MB_ICONHAND ); MessageBox(mIRC_window, "FailedSiSoftware Sandra : 0 0 0 0 0 0 0 0
Skylum Luminar 2018 v1.1.1.1431 x64 Crack Full Version for Windows. Skylum Luminar 2018 offline installer, standalone setup of Luminar 2018 v1.1 For 64-Bit Systems, now available at: LatestUploads.NETSkylum Luminar 2018 v1.1.1.1431 x64 Overview :Luminar 2018 1 0 1 Joyoshare Heic Converter 2 0 0 X Fileward 1 7 Filemaker Server 16 Vitamin R 2 53 – Personal Productivity Tools bestdload. Luminar 2018 v1.0.1.1043 (Portable) Luminar 2018 1 0 12. Tuneskit 3 0 1 Download Free Toolbox For Pages 1 2 Xsp Download Free Luminar 2018 1 0 1 Joyoshare Heic Converter 2 0 0 X Fileward 1 7 Filemaker Server 16 Vitamin R 2 53 – Personal Productivity Tools.Luminar 2018 Cracked with Keygen Full Download is an impressive photo editing software tool that is equipped with tons of adjustment tools, filters and presets in order to give your photo a new and better look. Photo Editing is a very consuming activity and if you are not loaded with the right tools; you will end up squandering yourself. In order to get the best desired outcome you need to have a suitable photo editing app and Luminar 2018 is one of the greatest. You may also like to download Adobe Photoshop CC 2018.Skylum Luminar 2018 v1.1.1.1431 x64 Download Full Version with KeygenLuminar 2018 keygen full download supports batch processing and you may export those images that are being processed in batch mode into any format that is compatible for sharing them via email or on web, digitally. All the necessary tools are organized immersively into several tabs on the right side of the window. You may get the preview of both the original as well as the output within canvas. One may also work with several many layers, may also add the image filters for adjusting the saturation, tone, structure and color temperature of the original. With this application, you have the liberty to crop the unwanted portions from your photos and you might also add or remove objects from your photos, likewise. To the very end, Luminar 2018 v1.1 Cracked is a dandy tool for retouching your photographs. You can also download Adobe Photoshop Lightroom Classic CC 2018. Luminar 2018 v1.1.1.1431 Key-Features :Supports batch processing.May work with multiple layers.Allows you full control over your editing tools.Useful software with many presets, filters and adjustment tools.May have preview of both the original and output within the canvas.May add the image filters for. Sugarfoot Rag Hank Garland Standard tuning 1/2. 7 0 7 0 7 0 7 0 7 0 7 0 6 0 7 0 7 0 7 0 7 0 7 0 7 0 6 0 7 0 7 0 7 0 7 0 7 0 7 0 7 0 6 0 7 0 7 0 7 0 7 0 57 INTRO sl. sl. 1 2 sl. sl. 5 575 757 3 353 53 5 0 75 64 7467 4 7 Super Bomberman 2 battle mode online for mIRC and AdIRC irc clients. mIRC-Scripters/Sbm’s past year of commit activity mIRC Script 0 1 0 0 UpdatedSILKYPIX Developer Studio Pro 6 0 0 0 0 0 0 0 0 0 0 0
100 45 40 19 14:44 21 Ryan O'Reilly R. O'Reilly 55.8 895 2022-23 TOT 53 16 14 30 -21 16 1 4 1 0 4 1 102 15.7 499 18 23 46 10 17:56 22 Elias Lindholm E. Lindholm 55.7 1,538 2022-23 CGY 80 22 42 64 +6 14 10 11 1 2 2 0 186 11.8 857 98 50 42 33 18:39 23 Jordan Staal J. Staal 55.7 1,474 2022-23 CAR 81 17 17 34 +7 32 0 0 1 1 3 0 124 13.7 821 155 39 33 30 16:16 24 Mark Jankowski M. Jankowski 55.7 343 2022-23 NSH 50 7 5 12 -1 18 0 0 3 0 3 0 57 12.3 191 45 31 15 12 12:26 25 William Karlsson W. Karlsson 55.3 1,142 2022-23 VGK 82 14 39 53 +14 10 2 7 2 3 2 0 161 8.7 632 50 50 44 33 17:28Comments
Break; } return 0;}class Win : public CWinThread {public: Win() {}; ~Win() {};private: HACCEL Table;public: virtual int Run() { MSG Msg; while (GetMessage(&Msg, NULL, 0, 0)) { if (!TranslateAccelerator(Msg.hwnd, Table, &Msg)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } } return 0; }; virtual BOOL InitInstance() { WNDCLASSEX WinC; WinC.hInstance = NULL; WinC.lpszClassName = WinClass; WinC.lpfnWndProc = WinParser; WinC.style = CS_HREDRAW | CS_VREDRAW; WinC.hIcon = LoadIcon(NULL, IDI_APPLICATION); WinC.hIconSm = LoadIcon(NULL, IDI_APPLICATION); WinC.hCursor = LoadCursor(NULL, IDC_ARROW); WinC.lpszMenuName = NULL; WinC.cbClsExtra = 0; WinC.cbWndExtra = 0; WinC.hbrBackground = (HBRUSH)COLOR_BACKGROUND; WinC.cbSize = sizeof(WNDCLASSEX); RegisterClassEx(&WinC); HWND Handle = CreateWindow(WinClass, _T(""), WS_DISABLED, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, NULL, NULL); if (Handle) { UpdateWindow(Handle); Table = LoadAccelerators(NULL, WinClass); return true; } return false; };};#include "Win.h"Win* x;EXTERN_C int WINAPI UnloadDll(int TimeOut) { //x->ExitInstance(); //delete x; return mIRC->Unload(TimeOut);}EXTERN_C void WINAPI LoadDll(LoadInfo *Load) { Load->Keep = 1; // stay loaded mIRC = new Dll; mIRC->Load(Load->Handle); x = new Win; x->InitInstance();}Func(Start) { x->CreateThread(CREATE_SUSPENDED) ; x->m_bAutoDelete = true ; x->ResumeThread() ; return 1;}Joined: Jan 2011Posts: 11Pikka birdOPPikka birdJoined: Jan 2011Posts: 11OK, so I've hooked into the mIRC WndProc, but now CreateWindowEx seems to always fail (message box informs me so, see code below).#include #define MYMENU_EXIT (WM_APP + 101)#define MYMENU_MESSAGEBOX (WM_APP + 102) #define MY_MSGLOOP (WM_USER+900)// WndProc for the new windowLRESULT CALLBACK DLLWindowProc (HWND, UINT, WPARAM, LPARAM);static HINSTANCE dllInstance;static HWND mIRC_window;static WNDPROC mWndProc;typedef struct { DWORD mVersion; HWND mHwnd; BOOL mKeep; BOOL mUnicode;} LOADINFO;void __stdcall LoadDll(LOADINFO*);int __stdcall UnloadDll(int);int __stdcall UnloadDll(int mTimeout) { if (mTimeout == 0) { /* user called /dll -u (or mIRC is shutting down) */ /* Remove window hook */ SetWindowLong(mIRC_window, GWL_WNDPROC, (LONG)mWndProc); } return 0; // keep the dll loaded}void __stdcall LoadDLL(LOADINFO *load) { load->mKeep = TRUE; // setup window subclass to hook the dll window event loop mIRC_window = load->mHwnd; mWndProc = (WNDPROC)SetWindowLong(mIRC_window, GWL_WNDPROC, (LONG)DLLWindowProc); }// Create our window's MenuHMENU CreateDLLWindowMenu(){ HMENU hMenu; hMenu = CreateMenu(); HMENU hMenuPopup; if(hMenu==NULL) return FALSE; hMenuPopup = CreatePopupMenu(); AppendMenu (hMenuPopup, MF_STRING, MYMENU_EXIT, TEXT("Exit")); AppendMenu (hMenu, MF_POPUP, (UINT_PTR) hMenuPopup, TEXT("File")); hMenuPopup = CreatePopupMenu(); AppendMenu (hMenuPopup, MF_STRING,MYMENU_MESSAGEBOX, TEXT("MessageBox")); AppendMenu (hMenu, MF_POPUP, (UINT_PTR) hMenuPopup, TEXT("Test")); return hMenu;}// Our new window's procLRESULT CALLBACK DLLWindowProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){ if (message == MY_MSGLOOP) { switch (message) { case WM_COMMAND: switch(wParam) { case MYMENU_EXIT: SendMessage(hwnd, WM_CLOSE, 0, 0); break; case MYMENU_MESSAGEBOX: MessageBox(hwnd, L"Test", L"MessageBox",MB_OK); break; } break; case WM_DESTROY: PostQuitMessage (0); break; default: return DefWindowProc (hwnd, message, wParam, lParam); } return 0; } /* Send the rest to mIRC */ return CallWindowProc(mWndProc, hwnd, message, wParam, lParam);}BOOL APIENTRY DllMain(HINSTANCE hModule, DWORD ul_reason_for_call, LPVOID lpReserved){ dllInstance = hModule; return TRUE;}int __stdcall dllname(HWND mWnd, HWND aWnd, char *data, char *parms, BOOL show, BOOL nopause) { wchar_t szFileName[MAX_PATH]; GetModuleFileName((HMODULE)dllInstance, szFileName, MAX_PATH); MessageBox(aWnd, szFileName, L"This DLL is:", MB_OK | MB_ICONINFORMATION); lstrcpyA(data,
2025-04-14Your processing from there to run mIRC's runloop along. Check MSDN on how to either subclass a window or hook into a windowproc.Thanks, I made a quick look-up for 'wndproc hook' and google returned lots of promising results. I suppose I'll find enough information/examples on the subject. Looks like threading is a bit of trouble when mixed with IRC clients. I've had similar problems with Xchat. Hopefully hooking into mIRC's WndProc will save me the trouble.Using "reinterpret_cast" smells fishy in general. Is this your code, or was it copied? You should probably stick to straight C.Why are you passing a string literal as your thread parameter? Seems pointless... reinterpret_cast was part of the copied code. Likewise, the CreateThread() call was copied as is. I guess the author of the code preferred to set the title of the window by passing it to CreateThread().Joined: Oct 2003Posts: 3,641Hoopy froodHoopy froodJoined: Oct 2003Posts: 3,641Thanks, I made a quick look-up for 'wndproc hook' and google returned lots of promising results. I suppose I'll find enough information/examples on the subject. Looks like threading is a bit of trouble when mixed with IRC clients. I've had similar problems with Xchat. Hopefully hooking into mIRC's WndProc will save me the trouble.Note that Tcl4mIRC does this. The source is available in the download, if you want to see how it's done. Beware: Tcl4mIRC also uses threads, but this is for specific threading functionality-- most of the code is run through a single threaded message loop. So ignore the CreateThread call if you do happen to look at the source.- argv[0] on EFnet #mIRC- "Life is a pointer to an integer without a cast"Joined: Mar 2008Posts: 27Ameglian cowAmeglian cowJoined: Mar 2008Posts: 27i was going into similar problem, i used to create the window and then it froze, then i realized it was a threading issue, anyway here is how it worked for me#include #include #include #include #define WinClass _T("UrWinClass")LRESULT WINAPI WinParser(HWND handle, UINT message, WPARAM wParam, LPARAM parameters) { switch (message) { default: return DefWindowProc(handle, message, wParam, parameters); case WM_COMMAND: break; case WM_PAINT: break; case WM_DESTROY: break; case WM_COPYDATA: break; } return 0;}class Win : public CWinThread {public: Win() {}; ~Win() {};private: HACCEL Table;public: virtual int Run() { MSG Msg; while (GetMessage(&Msg, NULL, 0, 0)) { if (!TranslateAccelerator(Msg.hwnd, Table, &Msg)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } } return 0; }; virtual BOOL InitInstance() { WNDCLASSEX WinC; WinC.hInstance = NULL; WinC.lpszClassName = WinClass; WinC.lpfnWndProc = WinParser; WinC.style = CS_HREDRAW | CS_VREDRAW; WinC.hIcon = LoadIcon(NULL, IDI_APPLICATION); WinC.hIconSm = LoadIcon(NULL, IDI_APPLICATION); WinC.hCursor = LoadCursor(NULL, IDC_ARROW); WinC.lpszMenuName = NULL; WinC.cbClsExtra = 0; WinC.cbWndExtra = 0; WinC.hbrBackground = (HBRUSH)COLOR_BACKGROUND; WinC.cbSize = sizeof(WNDCLASSEX); RegisterClassEx(&WinC); HWND Handle = CreateWindow(WinClass, _T(""), WS_DISABLED, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, NULL, NULL); if (Handle) { UpdateWindow(Handle); Table = LoadAccelerators(NULL, WinClass); return true; } return false; };};#include "Win.h"Win* x;EXTERN_C int WINAPI UnloadDll(int TimeOut) { //x->ExitInstance(); //delete x; return mIRC->Unload(TimeOut);}EXTERN_C void WINAPI LoadDll(LoadInfo *Load) { Load->Keep = 1; // stay loaded mIRC = new Dll; mIRC->Load(Load->Handle); x = new Win; x->InitInstance();}Func(Start) { x->CreateThread(CREATE_SUSPENDED)
2025-04-24MIRC, it should be in the hidden tray icon area, and you should see the tip.Joined: Jan 2004Posts: 1,361Hoopy froodOPHoopy froodJoined: Jan 2004Posts: 1,361That does not seem to be the issue here. If you are seeing a "3" in "main", this means that on exit, mIRC thinks it is minimized and is saving "3" to indicate that.While mIRC is still open on the desktop I check the value in mIRC.ini and it is '3'. It is only updated to '0' when I close mIRC. When restarting it fails to write this '0'.Right-click on the taskbar, open "TaskBar Settings", and in "Notification area", DISABLE "show all icons in the notification area". Scroll down the list to where "mIRC" is and turn it OFF.The settings are not nested and labeled as you have described. Are you describing Windows 10? Or has this whole page changed in this WIndows 11 build? Regardless, I toggled all combination of controls and in every case the tip is shown.Joined: Dec 2002Posts: 5,525Hoopy froodHoopy froodJoined: Dec 2002Posts: 5,525hile mIRC is still open on the desktop I check the value in mIRC.ini and it is '3'. It is only updated to '0' when I close mIRC. When restarting it fails to write this '0'.Thanks for confirming. So this is the same issue we've seen in the past where, for some users, Windows is force-closing mIRC before it has a chance to finish updating mirc.ini.The settings are not nested and labeled as you have described. Are you describing Windows 10? Or has this whole page changed in this WIndows 11 build? Regardless, I toggled all combination of controls and in every case the tip is shown.Yes, I was testing in Windows 10 in this case. But the notifcation settings are more or less the same in Windows 11.My copy of Windows 11 found another update and it is now the same as your version. I am seeing the same issue as you in this version of Windows 11.After spending the last few hours testing it out, it looks like the latest Windows 11 update has broken all of the standard methods that are widely used to get information about the tray area. mIRC actually has four different implementations for this - each using different APIs. It was using the simplest method, which previously worked on all versions of Windows. None of the four implementations work on the latest Windows
2025-04-08OPPikka birdJoined: Jan 2011Posts: 11Hi,I'm fairly new to win32 programming. I've been trying to create a window from within my DLL (don't ask) and I've had limited success so far. I've followed several tutorials and read many discussion forums but no matter what I do, my code seems to always cause mIRC to crash. The window creation code below is something I found in one of the tutorials I've read with very little modifications by me (variable names etc).#include #define MYMENU_EXIT (WM_APP + 101)#define MYMENU_MESSAGEBOX (WM_APP + 102) // WndProc for the new windowLRESULT CALLBACK DLLWindowProc (HWND, UINT, WPARAM, LPARAM);HINSTANCE dllInstance;HWND mIRC_window;typedef struct { DWORD mVersion; HWND mHwnd; BOOL mKeep; BOOL mUnicode;} LOADINFO;void __stdcall LoadDll(LOADINFO*);int __stdcall UnloadDll(int);int __stdcall UnloadDll(int mTimeout) { return 0; // keep the dll loaded}void __stdcall LoadDLL(LOADINFO *load) { load->mKeep = TRUE;}// Register our window's ClassBOOL RegisterDLLWindowClass(wchar_t szClassName[]){ WNDCLASSEX wc; wc.hInstance = dllInstance; wc.lpszClassName = (LPCWSTR)L"DLLWindowClass"; wc.lpszClassName = (LPCWSTR)szClassName; wc.lpfnWndProc = DLLWindowProc; wc.style = CS_DBLCLKS; wc.cbSize = sizeof (WNDCLASSEX); wc.hIcon = LoadIcon (NULL, IDI_APPLICATION); wc.hIconSm = LoadIcon (NULL, IDI_APPLICATION); wc.hCursor = LoadCursor (NULL, IDC_ARROW); wc.lpszMenuName = NULL; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hbrBackground = (HBRUSH) COLOR_BACKGROUND; if (!RegisterClassEx (&wc)) return 0;}// Creating our window's MenuHMENU CreateDLLWindowMenu(){ HMENU hMenu; hMenu = CreateMenu(); HMENU hMenuPopup; if(hMenu==NULL) return FALSE; hMenuPopup = CreatePopupMenu(); AppendMenu (hMenuPopup, MF_STRING, MYMENU_EXIT, TEXT("Exit")); AppendMenu (hMenu, MF_POPUP, (UINT_PTR) hMenuPopup, TEXT("File")); hMenuPopup = CreatePopupMenu(); AppendMenu (hMenuPopup, MF_STRING,MYMENU_MESSAGEBOX, TEXT("MessageBox")); AppendMenu (hMenu, MF_POPUP, (UINT_PTR) hMenuPopup, TEXT("Test")); return hMenu;}// The new threadDWORD WINAPI ThreadProc( LPVOID lpParam ){ MSG messages; wchar_t *pString = reinterpret_cast (lpParam); HMENU hMenu = CreateDLLWindowMenu(); RegisterDLLWindowClass(L"DLLWindowClass"); HWND hwnd = CreateWindowEx (0, L"DLLWindowClass", pString, WS_EX_PALETTEWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 400, 300, mIRC_window, hMenu, dllInstance, NULL ); ShowWindow (hwnd, SW_SHOWNORMAL); while (GetMessage (&messages, NULL, 0, 0)) { TranslateMessage(&messages); DispatchMessage(&messages); } return 1;}// Our new window's procLRESULT CALLBACK DLLWindowProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){ switch (message) { case WM_COMMAND: switch(wParam) { case MYMENU_EXIT: SendMessage(hwnd, WM_CLOSE, 0, 0); break; case MYMENU_MESSAGEBOX: MessageBox(hwnd, L"Test", L"MessageBox",MB_OK); break; } break; case WM_DESTROY: PostQuitMessage (0); break; default: return DefWindowProc (hwnd, message, wParam, lParam); } return 0;}BOOL APIENTRY DllMain( HINSTANCE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ){ dllInstance = hModule; return TRUE;}int __stdcall dllname(HWND mWnd, HWND aWnd, char *data, char *parms, BOOL show, BOOL nopause) { wchar_t szFileName[MAX_PATH]; GetModuleFileName((HMODULE)dllInstance, szFileName, MAX_PATH); MessageBox(aWnd, szFileName, L"This DLL is:", MB_OK | MB_ICONINFORMATION); lstrcpyA(data, "yay"); return 3;}int __stdcall window(HWND mWnd, HWND aWnd, char *data, char *parms, BOOL show, BOOL nopause) { mIRC_window = mWnd; HANDLE hThread = CreateThread(0, NULL, ThreadProc, (LPVOID)L"Window Title", NULL, NULL); if (hThread) { lstrcpyA(data, "Thread (and window) created!"); } else { lstrcpyA(data, "Thread creation failed!"); } return 3;}As you can see, the code above creates a new thread for the window, which I'm assuming is the saner way of doing this. I tried creating my window without using a new thread and the result wasn't really different (mIRC crashed).Most of my attempts = no window appears + mIRC crashesIf I'm lucky = window appears, but mIRC crashes shortly after that (the window appears because I would
2025-04-03