<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[PowerBASIC Users Meeting Point - PowerBASIC for Windows]]></title>
		<link>http://pump.richheimer.de/</link>
		<description><![CDATA[PowerBASIC Users Meeting Point - http://pump.richheimer.de]]></description>
		<pubDate>Fri, 01 May 2026 03:52:45 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[Making text unreadable, 1 sample code works, 2 do not work]]></title>
			<link>http://pump.richheimer.de/showthread.php?tid=112</link>
			<pubDate>Thu, 22 Jan 2026 17:32:50 +0000</pubDate>
			<dc:creator><![CDATA[<a href="http://pump.richheimer.de/member.php?action=profile&uid=177">Robert Alvarez</a>]]></dc:creator>
			<guid isPermaLink="false">http://pump.richheimer.de/showthread.php?tid=112</guid>
			<description><![CDATA[Found three code samples in the internet to make text unreadable.<br />
First one can read text and encrypt it and decrypt .<br />
The second and third seems to encrypt it but decrypt does not work.<br />
<br />
First sample code:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>#COMPILE EXE<br />
#INCLUDE "WIN32API.INC"<br />
GLOBAL hDlg AS LONG<br />
<br />
CALLBACK FUNCTION ENDPROG()<br />
 DIALOG END CBHNDL, 1<br />
END FUNCTION<br />
<br />
FUNCTION PBMAIN () AS LONG<br />
&#36;REGISTER NONE<br />
LOCAL result, i AS LONG<br />
<br />
'1. Basic Character Shift (Caesar Cipher Style)<br />
OPEN "secret 1a.dat" FOR OUTPUT AS #1<br />
text&#36; = "This is my secret message."<br />
FOR i = 1 TO LEN(text&#36;)<br />
 PRINT #1, CHR&#36;(ASC(MID&#36;(text&#36;, i, 1)) + 5);<br />
NEXT<br />
CLOSE #1<br />
<br />
OPEN "secret 1a.dat" FOR INPUT AS #1: LINE INPUT #1, text&#36;<br />
 ? text&#36; 'encryt<br />
FOR i = 1 TO LEN(text&#36;)<br />
 text1&#36;=text1&#36;+CHR&#36;(ASC(MID&#36;(text&#36;, i, 1)) - 5)<br />
NEXT<br />
 ? text1&#36;  'decreypt<br />
<br />
DIALOG NEW 0, "TEST 1", ,, 200, 150, %WS_MINIMIZEBOX+%WS_SYSMENU, 0 TO hDlg<br />
CONTROL ADD LABEL, hDlg, 100, "LABEL 1",80, 40, 60, 14,<br />
CONTROL ADD BUTTON,hDlg, 202, "&amp;Exit Program",100, 100,55, 14, CALL ENDPROG<br />
CONTROL SET FOCUS  hDlg, 202<br />
DIALOG SHOW MODAL  hDlg TO result<br />
END FUNCTION</code></div></div><br />
Second sample code:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>#COMPILE EXE<br />
#INCLUDE "WIN32API.INC"<br />
GLOBAL hDlg AS LONG<br />
<br />
CALLBACK FUNCTION ENDPROG()<br />
 DIALOG END CBHNDL, 1<br />
END FUNCTION<br />
<br />
FUNCTION PBMAIN () AS LONG<br />
&#36;REGISTER NONE<br />
LOCAL result, i, key AS LONG<br />
<br />
'2. XOR Encoding<br />
OPEN "secret2a.dat" FOR OUTPUT AS #1<br />
text&#36; = "This is my secret message."<br />
key = 123  ' Simple numeric key<br />
<br />
FOR i = 1 TO LEN(text&#36;)<br />
    PRINT #1, CHR&#36;(ASC(MID&#36;(text&#36;, i, 1)) XOR key);<br />
NEXT<br />
CLOSE #1<br />
'XOR is reversible — use the same key to decode.<br />
<br />
<br />
OPEN "secret2a.dat" FOR INPUT AS #1<br />
 GET #1,1, ch&#36;: ? ch&#36;&#36;<br />
decoded&#36; = ""<br />
key = 123<br />
WHILE NOT EOF(1)<br />
    INPUT #1, ch&#36;  ' : ? ch&#36;<br />
    decoded&#36; = decoded&#36; + CHR&#36;(ASC(ch&#36;) XOR key)  ': ? decoded&#36;<br />
WEND<br />
CLOSE #1<br />
? decoded&#36;<br />
<br />
DIALOG NEW 0, "TEST 1", ,, 200, 150, %WS_MINIMIZEBOX+%WS_SYSMENU, 0 TO hDlg<br />
CONTROL ADD LABEL, hDlg, 100, "LABEL 1",80, 40, 60, 14,<br />
CONTROL ADD BUTTON,hDlg, 202, "&amp;Exit Program",100, 100,55, 14, CALL ENDPROG<br />
CONTROL SET FOCUS  hDlg, 202<br />
DIALOG SHOW MODAL  hDlg TO result<br />
END FUNCTION</code></div></div><br />
Third sample code:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>#COMPILE EXE<br />
#INCLUDE "WIN32API.INC"<br />
GLOBAL hDlg AS LONG<br />
<br />
CALLBACK FUNCTION ENDPROG()<br />
 DIALOG END CBHNDL, 1<br />
END FUNCTION<br />
<br />
FUNCTION PBMAIN () AS LONG<br />
&#36;REGISTER NONE<br />
LOCAL result, i, mask AS LONG<br />
<br />
'3. Binary Write with Random Mask<br />
RANDOMIZE TIMER<br />
OPEN "secret 3.dat" FOR BINARY AS #1<br />
text&#36; = "This is my secret message."<br />
FOR i = 1 TO LEN(text&#36;)<br />
    mask = RND(255)<br />
    PUT&#36; #1, CHR&#36;(ASC(MID&#36;(text&#36;, i, 1)) XOR mask)<br />
NEXT<br />
CLOSE #1<br />
<br />
<br />
OPEN "secret 3.dat" FOR BINARY AS #1<br />
decoded&#36; = ""<br />
DO UNTIL EOF(1)<br />
    GET&#36; #1, 1, mask1&#36;<br />
    GET&#36; #1, 1, data1&#36;<br />
    decoded&#36; = decoded&#36; + CHR&#36;(ASC(data1&#36;) XOR ASC(mask1&#36;))<br />
LOOP<br />
CLOSE #1<br />
? decoded&#36;<br />
<br />
DIALOG NEW 0, "TEST 1", ,, 200, 150, %WS_MINIMIZEBOX+%WS_SYSMENU, 0 TO hDlg<br />
CONTROL ADD LABEL, hDlg, 100, "LABEL 1",80, 40, 60, 14,<br />
CONTROL ADD BUTTON,hDlg, 202, "&amp;Exit Program",100, 100,55, 14, CALL ENDPROG<br />
CONTROL SET FOCUS  hDlg, 202<br />
DIALOG SHOW MODAL  hDlg TO result<br />
END FUNCTION</code></div></div> <br />
How to fix?]]></description>
			<content:encoded><![CDATA[Found three code samples in the internet to make text unreadable.<br />
First one can read text and encrypt it and decrypt .<br />
The second and third seems to encrypt it but decrypt does not work.<br />
<br />
First sample code:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>#COMPILE EXE<br />
#INCLUDE "WIN32API.INC"<br />
GLOBAL hDlg AS LONG<br />
<br />
CALLBACK FUNCTION ENDPROG()<br />
 DIALOG END CBHNDL, 1<br />
END FUNCTION<br />
<br />
FUNCTION PBMAIN () AS LONG<br />
&#36;REGISTER NONE<br />
LOCAL result, i AS LONG<br />
<br />
'1. Basic Character Shift (Caesar Cipher Style)<br />
OPEN "secret 1a.dat" FOR OUTPUT AS #1<br />
text&#36; = "This is my secret message."<br />
FOR i = 1 TO LEN(text&#36;)<br />
 PRINT #1, CHR&#36;(ASC(MID&#36;(text&#36;, i, 1)) + 5);<br />
NEXT<br />
CLOSE #1<br />
<br />
OPEN "secret 1a.dat" FOR INPUT AS #1: LINE INPUT #1, text&#36;<br />
 ? text&#36; 'encryt<br />
FOR i = 1 TO LEN(text&#36;)<br />
 text1&#36;=text1&#36;+CHR&#36;(ASC(MID&#36;(text&#36;, i, 1)) - 5)<br />
NEXT<br />
 ? text1&#36;  'decreypt<br />
<br />
DIALOG NEW 0, "TEST 1", ,, 200, 150, %WS_MINIMIZEBOX+%WS_SYSMENU, 0 TO hDlg<br />
CONTROL ADD LABEL, hDlg, 100, "LABEL 1",80, 40, 60, 14,<br />
CONTROL ADD BUTTON,hDlg, 202, "&amp;Exit Program",100, 100,55, 14, CALL ENDPROG<br />
CONTROL SET FOCUS  hDlg, 202<br />
DIALOG SHOW MODAL  hDlg TO result<br />
END FUNCTION</code></div></div><br />
Second sample code:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>#COMPILE EXE<br />
#INCLUDE "WIN32API.INC"<br />
GLOBAL hDlg AS LONG<br />
<br />
CALLBACK FUNCTION ENDPROG()<br />
 DIALOG END CBHNDL, 1<br />
END FUNCTION<br />
<br />
FUNCTION PBMAIN () AS LONG<br />
&#36;REGISTER NONE<br />
LOCAL result, i, key AS LONG<br />
<br />
'2. XOR Encoding<br />
OPEN "secret2a.dat" FOR OUTPUT AS #1<br />
text&#36; = "This is my secret message."<br />
key = 123  ' Simple numeric key<br />
<br />
FOR i = 1 TO LEN(text&#36;)<br />
    PRINT #1, CHR&#36;(ASC(MID&#36;(text&#36;, i, 1)) XOR key);<br />
NEXT<br />
CLOSE #1<br />
'XOR is reversible — use the same key to decode.<br />
<br />
<br />
OPEN "secret2a.dat" FOR INPUT AS #1<br />
 GET #1,1, ch&#36;: ? ch&#36;&#36;<br />
decoded&#36; = ""<br />
key = 123<br />
WHILE NOT EOF(1)<br />
    INPUT #1, ch&#36;  ' : ? ch&#36;<br />
    decoded&#36; = decoded&#36; + CHR&#36;(ASC(ch&#36;) XOR key)  ': ? decoded&#36;<br />
WEND<br />
CLOSE #1<br />
? decoded&#36;<br />
<br />
DIALOG NEW 0, "TEST 1", ,, 200, 150, %WS_MINIMIZEBOX+%WS_SYSMENU, 0 TO hDlg<br />
CONTROL ADD LABEL, hDlg, 100, "LABEL 1",80, 40, 60, 14,<br />
CONTROL ADD BUTTON,hDlg, 202, "&amp;Exit Program",100, 100,55, 14, CALL ENDPROG<br />
CONTROL SET FOCUS  hDlg, 202<br />
DIALOG SHOW MODAL  hDlg TO result<br />
END FUNCTION</code></div></div><br />
Third sample code:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>#COMPILE EXE<br />
#INCLUDE "WIN32API.INC"<br />
GLOBAL hDlg AS LONG<br />
<br />
CALLBACK FUNCTION ENDPROG()<br />
 DIALOG END CBHNDL, 1<br />
END FUNCTION<br />
<br />
FUNCTION PBMAIN () AS LONG<br />
&#36;REGISTER NONE<br />
LOCAL result, i, mask AS LONG<br />
<br />
'3. Binary Write with Random Mask<br />
RANDOMIZE TIMER<br />
OPEN "secret 3.dat" FOR BINARY AS #1<br />
text&#36; = "This is my secret message."<br />
FOR i = 1 TO LEN(text&#36;)<br />
    mask = RND(255)<br />
    PUT&#36; #1, CHR&#36;(ASC(MID&#36;(text&#36;, i, 1)) XOR mask)<br />
NEXT<br />
CLOSE #1<br />
<br />
<br />
OPEN "secret 3.dat" FOR BINARY AS #1<br />
decoded&#36; = ""<br />
DO UNTIL EOF(1)<br />
    GET&#36; #1, 1, mask1&#36;<br />
    GET&#36; #1, 1, data1&#36;<br />
    decoded&#36; = decoded&#36; + CHR&#36;(ASC(data1&#36;) XOR ASC(mask1&#36;))<br />
LOOP<br />
CLOSE #1<br />
? decoded&#36;<br />
<br />
DIALOG NEW 0, "TEST 1", ,, 200, 150, %WS_MINIMIZEBOX+%WS_SYSMENU, 0 TO hDlg<br />
CONTROL ADD LABEL, hDlg, 100, "LABEL 1",80, 40, 60, 14,<br />
CONTROL ADD BUTTON,hDlg, 202, "&amp;Exit Program",100, 100,55, 14, CALL ENDPROG<br />
CONTROL SET FOCUS  hDlg, 202<br />
DIALOG SHOW MODAL  hDlg TO result<br />
END FUNCTION</code></div></div> <br />
How to fix?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Where is CAfxMp3.inc]]></title>
			<link>http://pump.richheimer.de/showthread.php?tid=109</link>
			<pubDate>Sat, 27 Dec 2025 00:48:55 +0000</pubDate>
			<dc:creator><![CDATA[<a href="http://pump.richheimer.de/member.php?action=profile&uid=151">Owen_English</a>]]></dc:creator>
			<guid isPermaLink="false">http://pump.richheimer.de/showthread.php?tid=109</guid>
			<description><![CDATA[Not quite sure where I got this chunk of code from but it includes CAfxMp3.inc which I don't have.<br />
Have searched everywhere - Google mentions it but leads nowhere.<br />
Anyone heard of or got a copy of this one please?]]></description>
			<content:encoded><![CDATA[Not quite sure where I got this chunk of code from but it includes CAfxMp3.inc which I don't have.<br />
Have searched everywhere - Google mentions it but leads nowhere.<br />
Anyone heard of or got a copy of this one please?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[How to run PB progs in Linux]]></title>
			<link>http://pump.richheimer.de/showthread.php?tid=101</link>
			<pubDate>Sun, 19 Oct 2025 20:27:26 +0000</pubDate>
			<dc:creator><![CDATA[<a href="http://pump.richheimer.de/member.php?action=profile&uid=5">Mannish Bhandari</a>]]></dc:creator>
			<guid isPermaLink="false">http://pump.richheimer.de/showthread.php?tid=101</guid>
			<description><![CDATA[I heard so many terrible stories about upgrading to Windows 11 I'm now interested to use Linux instead and I want to be able to run my PB <br />
progs in Linux.  how to do this ?]]></description>
			<content:encoded><![CDATA[I heard so many terrible stories about upgrading to Windows 11 I'm now interested to use Linux instead and I want to be able to run my PB <br />
progs in Linux.  how to do this ?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[READ$/Data Slow]]></title>
			<link>http://pump.richheimer.de/showthread.php?tid=97</link>
			<pubDate>Fri, 10 Oct 2025 22:55:42 +0000</pubDate>
			<dc:creator><![CDATA[<a href="http://pump.richheimer.de/member.php?action=profile&uid=195">Brent F Boshart</a>]]></dc:creator>
			<guid isPermaLink="false">http://pump.richheimer.de/showthread.php?tid=97</guid>
			<description><![CDATA[I have some data that I want to keep embedded in the code instead of an external file.  This takes about 4 seconds to execute (the routines formatStarRA, formatStarDec and J2000Topo only account for about 0.3 seconds).  I could make each line (element) one string padding with spaces and then using mid&#36; to parse it out. That would be 2400 READ&#36; instead of 2400*11.   Any other suggestions to speed this up? <br />
<br />
<br />
<br />
<br />
FUNCTION DoubleStarLoad AS LONG<br />
    LOCAL t AS LONG<br />
    LOCAL tempRA, TempDec AS DOUBLE, dummy AS STRING<br />
<br />
    FOR t= 0 TO 2399<br />
        DoubleStarData(t).CST=READ&#36;((t)*11+1)<br />
        DoubleStarData(t).ObjName=READ&#36;((t)*11+2)<br />
        DoubleStarData(t).SAO=READ&#36;((t)*11+3)<br />
        tempRA=formatStarRA(READ&#36;((t)*11+4))<br />
        tempDec=formatStarDec(READ&#36;((t)*11+5))<br />
        J2000Topo(tempRA,tempDec)<br />
        DoubleStarData(t).RA=tempRA<br />
        DoubleStarData(t).Dec=tempDec<br />
        DoubleStarData(t).Magnitude1=READ&#36;(t*11+6)<br />
        DoubleStarData(t).Magnitude2=READ&#36;(t*11+7)<br />
        DoubleStarData(t).Spectral=READ&#36;(t*11+9)<br />
        DoubleStarData(t).Distance=VAL(READ&#36;(t*11+10))<br />
        DoubleStarData(t).Separation=READ&#36;(t*11+11)<br />
    NEXT t<br />
<br />
    DATA "Aqr","1 Aqr","126062","20:39:25","+00:29:11","5.27","12.3","7.03","K0III","71.48","65"<br />
    DATA "Ari","1 Ari","74966","01:49:50","+22:15:45","16","17","1","M3.7+M4.2","","17.5"<br />
    DATA "Ari","1 Ari","74966","01:50:09","+22:16:30","6.33","7.21","0.88","G3III","179.53","2.9"<br />
    DATA "Boo","1 Boo","82942","13:40:40","+19:57:20","5.76","9.6","3.84","A1V","100.6","4.4"<br />
    DATA "Cam","1 Cam","24672","04:32:02","+53:54:39","5.78","6.82","1.04","B0III","217.39","10.4"<br />
    DATA "Del","1 Del","106172","20:30:18","+10:53:45","6.2","8.02","1.82","Be+B","227.79","0.9"<br />
    DATA "Dra","1 Dra","15532","11:31:07","+69:24:00","14.3","14.8","0.5","","","1.2"<br />
    ....<br />
<br />
END FUNCTION]]></description>
			<content:encoded><![CDATA[I have some data that I want to keep embedded in the code instead of an external file.  This takes about 4 seconds to execute (the routines formatStarRA, formatStarDec and J2000Topo only account for about 0.3 seconds).  I could make each line (element) one string padding with spaces and then using mid&#36; to parse it out. That would be 2400 READ&#36; instead of 2400*11.   Any other suggestions to speed this up? <br />
<br />
<br />
<br />
<br />
FUNCTION DoubleStarLoad AS LONG<br />
    LOCAL t AS LONG<br />
    LOCAL tempRA, TempDec AS DOUBLE, dummy AS STRING<br />
<br />
    FOR t= 0 TO 2399<br />
        DoubleStarData(t).CST=READ&#36;((t)*11+1)<br />
        DoubleStarData(t).ObjName=READ&#36;((t)*11+2)<br />
        DoubleStarData(t).SAO=READ&#36;((t)*11+3)<br />
        tempRA=formatStarRA(READ&#36;((t)*11+4))<br />
        tempDec=formatStarDec(READ&#36;((t)*11+5))<br />
        J2000Topo(tempRA,tempDec)<br />
        DoubleStarData(t).RA=tempRA<br />
        DoubleStarData(t).Dec=tempDec<br />
        DoubleStarData(t).Magnitude1=READ&#36;(t*11+6)<br />
        DoubleStarData(t).Magnitude2=READ&#36;(t*11+7)<br />
        DoubleStarData(t).Spectral=READ&#36;(t*11+9)<br />
        DoubleStarData(t).Distance=VAL(READ&#36;(t*11+10))<br />
        DoubleStarData(t).Separation=READ&#36;(t*11+11)<br />
    NEXT t<br />
<br />
    DATA "Aqr","1 Aqr","126062","20:39:25","+00:29:11","5.27","12.3","7.03","K0III","71.48","65"<br />
    DATA "Ari","1 Ari","74966","01:49:50","+22:15:45","16","17","1","M3.7+M4.2","","17.5"<br />
    DATA "Ari","1 Ari","74966","01:50:09","+22:16:30","6.33","7.21","0.88","G3III","179.53","2.9"<br />
    DATA "Boo","1 Boo","82942","13:40:40","+19:57:20","5.76","9.6","3.84","A1V","100.6","4.4"<br />
    DATA "Cam","1 Cam","24672","04:32:02","+53:54:39","5.78","6.82","1.04","B0III","217.39","10.4"<br />
    DATA "Del","1 Del","106172","20:30:18","+10:53:45","6.2","8.02","1.82","Be+B","227.79","0.9"<br />
    DATA "Dra","1 Dra","15532","11:31:07","+69:24:00","14.3","14.8","0.5","","","1.2"<br />
    ....<br />
<br />
END FUNCTION]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[& Character problem]]></title>
			<link>http://pump.richheimer.de/showthread.php?tid=90</link>
			<pubDate>Tue, 30 Sep 2025 18:08:11 +0000</pubDate>
			<dc:creator><![CDATA[<a href="http://pump.richheimer.de/member.php?action=profile&uid=177">Robert Alvarez</a>]]></dc:creator>
			<guid isPermaLink="false">http://pump.richheimer.de/showthread.php?tid=90</guid>
			<description><![CDATA[using the &amp; character is a problem when typing in text box and displaying it, is thee a fix<br />
<br />
type A&amp;B<br />
screen show A<span style="text-decoration: underline;" class="mycode_u">B</span><br />
<span style="text-decoration: underline;" class="mycode_u">xprint show A&amp;B</span><br />
<br />
<span style="text-decoration: underline;" class="mycode_u">type A&amp;&amp;B</span><br />
<span style="text-decoration: underline;" class="mycode_u">screen show A&amp;B</span><br />
<span style="text-decoration: underline;" class="mycode_u">xprint show A&amp;&amp;B</span>]]></description>
			<content:encoded><![CDATA[using the &amp; character is a problem when typing in text box and displaying it, is thee a fix<br />
<br />
type A&amp;B<br />
screen show A<span style="text-decoration: underline;" class="mycode_u">B</span><br />
<span style="text-decoration: underline;" class="mycode_u">xprint show A&amp;B</span><br />
<br />
<span style="text-decoration: underline;" class="mycode_u">type A&amp;&amp;B</span><br />
<span style="text-decoration: underline;" class="mycode_u">screen show A&amp;B</span><br />
<span style="text-decoration: underline;" class="mycode_u">xprint show A&amp;&amp;B</span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[gbClientCapture (Discussion)]]></title>
			<link>http://pump.richheimer.de/showthread.php?tid=81</link>
			<pubDate>Sat, 20 Sep 2025 17:43:47 +0000</pubDate>
			<dc:creator><![CDATA[<a href="http://pump.richheimer.de/member.php?action=profile&uid=94">Gary Beene</a>]]></dc:creator>
			<guid isPermaLink="false">http://pump.richheimer.de/showthread.php?tid=81</guid>
			<description><![CDATA[I decided to break the gbScroller app into two parts. The first is <a href="http://pump.richheimer.de/showthread.php?tid=80" target="_blank" rel="noopener" class="mycode_url">posted</a> in the forum as gbClientCapture.<br />
<br />
It captures the area under the transparent dialog client, merging each new capture into a horizontal image for subsequent scrolling. I've not yet written the scrolling app.<br />
<br />
The area between the Toolbar and Statusbar is captured and merged into a horizontal image.<br />
<br />
<img src="https://www.garybeene.com/files/capture.jpg" loading="lazy"  alt="[Image: capture.jpg]" class="mycode_img" /><br />
<hr class="mycode_hr" />
Some new features come to mind:<br />
<br />
1. allow using the arrow keys to more accurately position the dialog<br />
2. with transparency, the resize with a mouse ability is limited to the caption and toolbar.  Not sure why but I know I don't like it.<br />
<br />
Not a feature, but I notice there is a tiny gap between the caption and toolbar.  I'm not sure why.  I thought the toolbar by default would be positioned immediately next to the caption.<br />
<br />
And, another thing, I tweaked the various dimensions to make sure the client area is captured, without overlapping the toolbar, statusbar and dialog borders. But it seems to me that I should have been able to do a more exact dimensioning of the capture positioning/size.<br />
<hr class="mycode_hr" />
Here's how I envision this working.<br />
<br />
1. Call up the electronic copy of the music (PDF in this example).<br />
2. Place gbClientCapture over the first row of music (resize as needed)<br />
3. Click "Copy"<br />
4. Scroll the PDF upwards until the next row of music is under gbClientCapture (that should be easier than moving the dialog itself.<br />
5. Click "Copy"<br />
6. Repeat until all rows of music are captured and placed in the "merge.bmp" file.<br />
<br />
In this example, the Adele music sheet PDF is displayed vertically in my browser.  The gbClientCapture is positioned over the first row, ready for "Copy".  Then, instead of moving the dialog to a new position, I scroll the PDF upwards until the next row of music is visible under the dialog client area.  Repeat Copying untill all rows of music are captured. With each capture the "merge.bmp" file is updated to contain the most recent capture.<br />
<br />
<img src="https://www.garybeene.com/files/capture2.jpg" loading="lazy"  alt="[Image: capture2.jpg]" class="mycode_img" />]]></description>
			<content:encoded><![CDATA[I decided to break the gbScroller app into two parts. The first is <a href="http://pump.richheimer.de/showthread.php?tid=80" target="_blank" rel="noopener" class="mycode_url">posted</a> in the forum as gbClientCapture.<br />
<br />
It captures the area under the transparent dialog client, merging each new capture into a horizontal image for subsequent scrolling. I've not yet written the scrolling app.<br />
<br />
The area between the Toolbar and Statusbar is captured and merged into a horizontal image.<br />
<br />
<img src="https://www.garybeene.com/files/capture.jpg" loading="lazy"  alt="[Image: capture.jpg]" class="mycode_img" /><br />
<hr class="mycode_hr" />
Some new features come to mind:<br />
<br />
1. allow using the arrow keys to more accurately position the dialog<br />
2. with transparency, the resize with a mouse ability is limited to the caption and toolbar.  Not sure why but I know I don't like it.<br />
<br />
Not a feature, but I notice there is a tiny gap between the caption and toolbar.  I'm not sure why.  I thought the toolbar by default would be positioned immediately next to the caption.<br />
<br />
And, another thing, I tweaked the various dimensions to make sure the client area is captured, without overlapping the toolbar, statusbar and dialog borders. But it seems to me that I should have been able to do a more exact dimensioning of the capture positioning/size.<br />
<hr class="mycode_hr" />
Here's how I envision this working.<br />
<br />
1. Call up the electronic copy of the music (PDF in this example).<br />
2. Place gbClientCapture over the first row of music (resize as needed)<br />
3. Click "Copy"<br />
4. Scroll the PDF upwards until the next row of music is under gbClientCapture (that should be easier than moving the dialog itself.<br />
5. Click "Copy"<br />
6. Repeat until all rows of music are captured and placed in the "merge.bmp" file.<br />
<br />
In this example, the Adele music sheet PDF is displayed vertically in my browser.  The gbClientCapture is positioned over the first row, ready for "Copy".  Then, instead of moving the dialog to a new position, I scroll the PDF upwards until the next row of music is visible under the dialog client area.  Repeat Copying untill all rows of music are captured. With each capture the "merge.bmp" file is updated to contain the most recent capture.<br />
<br />
<img src="https://www.garybeene.com/files/capture2.jpg" loading="lazy"  alt="[Image: capture2.jpg]" class="mycode_img" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[File Transfer Between PCs]]></title>
			<link>http://pump.richheimer.de/showthread.php?tid=79</link>
			<pubDate>Fri, 19 Sep 2025 20:32:40 +0000</pubDate>
			<dc:creator><![CDATA[<a href="http://pump.richheimer.de/member.php?action=profile&uid=94">Gary Beene</a>]]></dc:creator>
			<guid isPermaLink="false">http://pump.richheimer.de/showthread.php?tid=79</guid>
			<description><![CDATA[I want to move all DOCX files from an old PC to my new PC, preferably by first putting them all on a flash drive which I use for the transfer.<br />
<br />
I've posted code before that would capture a list of files anywhere on the PC that match a filespec such as "*.docx". I can use that to copy files to the flash.<br />
<br />
But because some files have the same name, I can't just fill the root folder of the flash with all the files by their original name.  To do that I would have to rename files - such as with a simple prefix of "00001", "0002", etc.  Or, I could prefix the original folder name onto each file name, substituting the \ characters with an underscore.  That won't recreate the old folder structure on the new PC, but will at least capture all of the files.<br />
<br />
Better yet, I could use something like Beyond Compare to find only DOCX files and replicate the original folder structure onto the new PC.  That's the most "exact" approach, but I'd have to be careful not to inappropriately overwrite any files on the new PC.<br />
<br />
As best I know, the command line xcopy can do a similar thing but doesn't as easily et you pick and chose which files to copy.<br />
<br />
Anyone use a better solution?]]></description>
			<content:encoded><![CDATA[I want to move all DOCX files from an old PC to my new PC, preferably by first putting them all on a flash drive which I use for the transfer.<br />
<br />
I've posted code before that would capture a list of files anywhere on the PC that match a filespec such as "*.docx". I can use that to copy files to the flash.<br />
<br />
But because some files have the same name, I can't just fill the root folder of the flash with all the files by their original name.  To do that I would have to rename files - such as with a simple prefix of "00001", "0002", etc.  Or, I could prefix the original folder name onto each file name, substituting the \ characters with an underscore.  That won't recreate the old folder structure on the new PC, but will at least capture all of the files.<br />
<br />
Better yet, I could use something like Beyond Compare to find only DOCX files and replicate the original folder structure onto the new PC.  That's the most "exact" approach, but I'd have to be careful not to inappropriately overwrite any files on the new PC.<br />
<br />
As best I know, the command line xcopy can do a similar thing but doesn't as easily et you pick and chose which files to copy.<br />
<br />
Anyone use a better solution?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[DOCX and XLSX Viewer]]></title>
			<link>http://pump.richheimer.de/showthread.php?tid=78</link>
			<pubDate>Thu, 18 Sep 2025 02:30:37 +0000</pubDate>
			<dc:creator><![CDATA[<a href="http://pump.richheimer.de/member.php?action=profile&uid=94">Gary Beene</a>]]></dc:creator>
			<guid isPermaLink="false">http://pump.richheimer.de/showthread.php?tid=78</guid>
			<description><![CDATA[I'd like to display DOCX and XLSX files with their full visual content.<br />
<br />
But, I need for the solution to NOT require Word/Excel be installed on a user's PC.<br />
<br />
Is that possible?]]></description>
			<content:encoded><![CDATA[I'd like to display DOCX and XLSX files with their full visual content.<br />
<br />
But, I need for the solution to NOT require Word/Excel be installed on a user's PC.<br />
<br />
Is that possible?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[gbScroller - Vertical to Horizontal Music Converter]]></title>
			<link>http://pump.richheimer.de/showthread.php?tid=77</link>
			<pubDate>Wed, 17 Sep 2025 15:13:10 +0000</pubDate>
			<dc:creator><![CDATA[<a href="http://pump.richheimer.de/member.php?action=profile&uid=94">Gary Beene</a>]]></dc:creator>
			<guid isPermaLink="false">http://pump.richheimer.de/showthread.php?tid=77</guid>
			<description><![CDATA[From talking with a friend, I got the idea of writing a tool to convert music sheets from a portrait format to a scrollable, horizontal format.  I went looking on the web, thinking there must be one already, but did not find anything.  I have the basics working, but before I spent more time on it, <span style="font-weight: bold;" class="mycode_b">I thought I'd see if anyone here knows of such a thing.</span><br />
<br />
Here's an image showing the idea.  A vertical page of music, with multiple rows of content, would be converted to a horizontal image that can be scrolled at a specified rate.  There might be several pages to convert.<br />
<br />
<img src="https://garybeene.com/files/gbscroller.png" loading="lazy"  alt="[Image: gbscroller.png]" class="mycode_img" /><br />
<br />
My approach is to have a transparent, resizable dialog that the user places over a row of music and takes a snapshot of that row, then moves the dialog over the next row of music and takes another snapshot - repeating until all rows over multiple pages have been captured. All images would be the same size. gbScroller would merge the images into a single image, which could then be displayed and scrolled within the same app.]]></description>
			<content:encoded><![CDATA[From talking with a friend, I got the idea of writing a tool to convert music sheets from a portrait format to a scrollable, horizontal format.  I went looking on the web, thinking there must be one already, but did not find anything.  I have the basics working, but before I spent more time on it, <span style="font-weight: bold;" class="mycode_b">I thought I'd see if anyone here knows of such a thing.</span><br />
<br />
Here's an image showing the idea.  A vertical page of music, with multiple rows of content, would be converted to a horizontal image that can be scrolled at a specified rate.  There might be several pages to convert.<br />
<br />
<img src="https://garybeene.com/files/gbscroller.png" loading="lazy"  alt="[Image: gbscroller.png]" class="mycode_img" /><br />
<br />
My approach is to have a transparent, resizable dialog that the user places over a row of music and takes a snapshot of that row, then moves the dialog over the next row of music and takes another snapshot - repeating until all rows over multiple pages have been captured. All images would be the same size. gbScroller would merge the images into a single image, which could then be displayed and scrolled within the same app.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[gbLocator (Discussion)]]></title>
			<link>http://pump.richheimer.de/showthread.php?tid=69</link>
			<pubDate>Sun, 07 Sep 2025 05:49:58 +0000</pubDate>
			<dc:creator><![CDATA[<a href="http://pump.richheimer.de/member.php?action=profile&uid=94">Gary Beene</a>]]></dc:creator>
			<guid isPermaLink="false">http://pump.richheimer.de/showthread.php?tid=69</guid>
			<description><![CDATA[This thread is for discussion of <a href="https://www.voidtools.com/forum/viewtopic.php?t=16854" target="_blank" rel="noopener" class="mycode_url">gbLocator </a>- a file and folder search utility for blind and low vision users. I posted it a few days ago in the Source Code forum.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Same links ...</span><br />
Web Site: <a href="https://newvisionconcepts.com/gblocator/gblocator.htm" target="_blank" rel="noopener" class="mycode_url"><span style="color: #0072bc;" class="mycode_color">https://newvisionconcepts.com/gblocator/gblocator.htm</span></a><br />
Installation File:   <a href="https://garybeene.com/files/gblocator_setup.exe" target="_blank" rel="noopener" class="mycode_url"><span style="color: #0072bc;" class="mycode_color">https://garybeene.com/files/gblocator_setup.exe</span></a><br />
Source Code File:   <a href="https://garybeene.com/files/gblocator.zip" target="_blank" rel="noopener" class="mycode_url"><span style="color: #0072bc;" class="mycode_color">https://garybeene.com/files/gblocator.zip</span></a> <br />
<br />
There's even a short video: <a href="https://garybeene.com/files/gblocator.mp4" target="_blank" rel="noopener" class="mycode_url"> https://garybeene.com/files/gblocator.mp4</a><br />
<br />
<span style="font-weight: bold;" class="mycode_b">ver 4.1 is now available - these new features:</span><br />
<br />
<br />
1. F1 shows Settings Shortcuts and F2 shows Actions Shortcuts.<br />
2. When Ctrl-F1 is used to start a browser, the BigX toolbar is shown - literally a big "X" over the small browser "x". (optional)<br />
3. Folders now have "(f)" in front of them in Column 1 and when spoken, is spoken as "folder"<br />
4. When opening a file/folder externally (browser, default client, or File Explorer), user can choose between opening the BigX toolbar or Windows Narrator (or neither)<br />
5. A variety of changes to the text spoken when an action is taken - generally more informative but sometimes shorter<br />
6. The Ctrl+Mouse fontsize change now works over the RE and the LV<br />
7. When Expanding a folder, the folder name is now NOT shown in the RE.  Having that long a visible search string was annoying. <br />
8. As searches are made, the last 5 search terms are kept. To see them, press the up/down arrow keys when focus is on the RE (for my low vision users, I avoid dropdown combobox solutions).<br />
9. Previews of image files (I don't think this was in the previous version)<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Howdy, Mike!</span><br />
<br />
Thanks for that post.  I'm glad to hear it was ok at 1920x1080.  I tried the newest version on 3840x2160 and it seems to draw correctly.  If you would, please try the latest version on your 3840x2160 again and let me know if it look ok for you too.<br />
<br />
In the latest version, I can't repeat the problem you mentioned, about ESC. As you noted, ESC is supposed to stop talking and exit only if talking is stopped.<br />
<hr class="mycode_hr" />
<span style="font-weight: bold;" class="mycode_b">Howdy, Pierre!</span><br />
<br />
Yes, with David's encouragement, I put up a <span style="font-weight: bold;" class="mycode_b"><a href="https://www.voidtools.com/forum/viewtopic.php?t=16854" target="_blank" rel="noopener" class="mycode_url">thread </a></span>about <span style="font-weight: bold;" class="mycode_b">gbLocator </span>on the Everything forum!<br />
I was pretty excited about the possibility of getting responses there, but it's been 5 days and I've had zero responses!  Bummer that!  <img src="http://pump.richheimer.de/images/smilies/huh.png" alt="Huh" title="Huh" class="smilie smilie_17" />  I will have to be patient!<br />
<hr class="mycode_hr" />
Test. I don't seem to have figured out how to make a reply that carries the name of the person making the reply.  This time, I pressed "New Reply" across the top of the thread.]]></description>
			<content:encoded><![CDATA[This thread is for discussion of <a href="https://www.voidtools.com/forum/viewtopic.php?t=16854" target="_blank" rel="noopener" class="mycode_url">gbLocator </a>- a file and folder search utility for blind and low vision users. I posted it a few days ago in the Source Code forum.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Same links ...</span><br />
Web Site: <a href="https://newvisionconcepts.com/gblocator/gblocator.htm" target="_blank" rel="noopener" class="mycode_url"><span style="color: #0072bc;" class="mycode_color">https://newvisionconcepts.com/gblocator/gblocator.htm</span></a><br />
Installation File:   <a href="https://garybeene.com/files/gblocator_setup.exe" target="_blank" rel="noopener" class="mycode_url"><span style="color: #0072bc;" class="mycode_color">https://garybeene.com/files/gblocator_setup.exe</span></a><br />
Source Code File:   <a href="https://garybeene.com/files/gblocator.zip" target="_blank" rel="noopener" class="mycode_url"><span style="color: #0072bc;" class="mycode_color">https://garybeene.com/files/gblocator.zip</span></a> <br />
<br />
There's even a short video: <a href="https://garybeene.com/files/gblocator.mp4" target="_blank" rel="noopener" class="mycode_url"> https://garybeene.com/files/gblocator.mp4</a><br />
<br />
<span style="font-weight: bold;" class="mycode_b">ver 4.1 is now available - these new features:</span><br />
<br />
<br />
1. F1 shows Settings Shortcuts and F2 shows Actions Shortcuts.<br />
2. When Ctrl-F1 is used to start a browser, the BigX toolbar is shown - literally a big "X" over the small browser "x". (optional)<br />
3. Folders now have "(f)" in front of them in Column 1 and when spoken, is spoken as "folder"<br />
4. When opening a file/folder externally (browser, default client, or File Explorer), user can choose between opening the BigX toolbar or Windows Narrator (or neither)<br />
5. A variety of changes to the text spoken when an action is taken - generally more informative but sometimes shorter<br />
6. The Ctrl+Mouse fontsize change now works over the RE and the LV<br />
7. When Expanding a folder, the folder name is now NOT shown in the RE.  Having that long a visible search string was annoying. <br />
8. As searches are made, the last 5 search terms are kept. To see them, press the up/down arrow keys when focus is on the RE (for my low vision users, I avoid dropdown combobox solutions).<br />
9. Previews of image files (I don't think this was in the previous version)<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Howdy, Mike!</span><br />
<br />
Thanks for that post.  I'm glad to hear it was ok at 1920x1080.  I tried the newest version on 3840x2160 and it seems to draw correctly.  If you would, please try the latest version on your 3840x2160 again and let me know if it look ok for you too.<br />
<br />
In the latest version, I can't repeat the problem you mentioned, about ESC. As you noted, ESC is supposed to stop talking and exit only if talking is stopped.<br />
<hr class="mycode_hr" />
<span style="font-weight: bold;" class="mycode_b">Howdy, Pierre!</span><br />
<br />
Yes, with David's encouragement, I put up a <span style="font-weight: bold;" class="mycode_b"><a href="https://www.voidtools.com/forum/viewtopic.php?t=16854" target="_blank" rel="noopener" class="mycode_url">thread </a></span>about <span style="font-weight: bold;" class="mycode_b">gbLocator </span>on the Everything forum!<br />
I was pretty excited about the possibility of getting responses there, but it's been 5 days and I've had zero responses!  Bummer that!  <img src="http://pump.richheimer.de/images/smilies/huh.png" alt="Huh" title="Huh" class="smilie smilie_17" />  I will have to be patient!<br />
<hr class="mycode_hr" />
Test. I don't seem to have figured out how to make a reply that carries the name of the person making the reply.  This time, I pressed "New Reply" across the top of the thread.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[gbNotes (Discussion)]]></title>
			<link>http://pump.richheimer.de/showthread.php?tid=64</link>
			<pubDate>Wed, 03 Sep 2025 20:05:10 +0000</pubDate>
			<dc:creator><![CDATA[<a href="http://pump.richheimer.de/member.php?action=profile&uid=94">Gary Beene</a>]]></dc:creator>
			<guid isPermaLink="false">http://pump.richheimer.de/showthread.php?tid=64</guid>
			<description><![CDATA[I was going to wait about posting gbNotes until I added more features, but I've gotten distracted and probably won't touch it again for a while.  But since I use it daily I thought it ought to be good enough to share.<br />
<br />
<a href="http://pump.richheimer.de/showthread.php?tid=63" target="_blank" rel="noopener" class="mycode_url">Link to Source Code Forum</a><br />
<br />
The "database" is just a text file that uses "++++" as a delimiter between entries.<br />
<br />
The first line of each entry is just a user name.  Any number of lines can added after that.<br />
<br />
On the left is a search term editor, a list of the most search terms and a list of the most recent search matches.  Click on a match to see and edit the content.  Ctrl+D will insert a date line into the editor, below which you can enter new content.<br />
<br />
Each day, it does a backup of the CRM.txt file into a "backup" folder.<br />
<br />
You can also view/edit/search the entire CRM.txt file<br />
<br />
There's not much more to it.  Simple, but good enough to let me track my contacts.<br />
<br />
<img src="http://garybeene.com/images/gbnotes.png" loading="lazy"  alt="[Image: gbnotes.png]" class="mycode_img" />]]></description>
			<content:encoded><![CDATA[I was going to wait about posting gbNotes until I added more features, but I've gotten distracted and probably won't touch it again for a while.  But since I use it daily I thought it ought to be good enough to share.<br />
<br />
<a href="http://pump.richheimer.de/showthread.php?tid=63" target="_blank" rel="noopener" class="mycode_url">Link to Source Code Forum</a><br />
<br />
The "database" is just a text file that uses "++++" as a delimiter between entries.<br />
<br />
The first line of each entry is just a user name.  Any number of lines can added after that.<br />
<br />
On the left is a search term editor, a list of the most search terms and a list of the most recent search matches.  Click on a match to see and edit the content.  Ctrl+D will insert a date line into the editor, below which you can enter new content.<br />
<br />
Each day, it does a backup of the CRM.txt file into a "backup" folder.<br />
<br />
You can also view/edit/search the entire CRM.txt file<br />
<br />
There's not much more to it.  Simple, but good enough to let me track my contacts.<br />
<br />
<img src="http://garybeene.com/images/gbnotes.png" loading="lazy"  alt="[Image: gbnotes.png]" class="mycode_img" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[gbThreads]]></title>
			<link>http://pump.richheimer.de/showthread.php?tid=60</link>
			<pubDate>Wed, 03 Sep 2025 01:01:28 +0000</pubDate>
			<dc:creator><![CDATA[<a href="http://pump.richheimer.de/member.php?action=profile&uid=94">Gary Beene</a>]]></dc:creator>
			<guid isPermaLink="false">http://pump.richheimer.de/showthread.php?tid=60</guid>
			<description><![CDATA[With the guidance from the other thread on accessing the forum, I was able to update my gbThreads files through today.<br />
<br />
These links contain just the file bigthread.htm. Use it to replace the one you already have.<br />
<br />
<a href="https://garybeene.com/files/bigthread.zip" target="_blank" rel="noopener" class="mycode_url">https://garybeene.com/files/bigthread.zip</a>   140MB<br />
<br />
<a href="https://garybeene.com/files/bigthread.7z" target="_blank" rel="noopener" class="mycode_url">https://garybeene.com/files/bigthread.7z</a>   90MB<br />
<br />
I had to manually walk through the forums to get a list of threads that have changed since the last update so please let me know if I missed anything!]]></description>
			<content:encoded><![CDATA[With the guidance from the other thread on accessing the forum, I was able to update my gbThreads files through today.<br />
<br />
These links contain just the file bigthread.htm. Use it to replace the one you already have.<br />
<br />
<a href="https://garybeene.com/files/bigthread.zip" target="_blank" rel="noopener" class="mycode_url">https://garybeene.com/files/bigthread.zip</a>   140MB<br />
<br />
<a href="https://garybeene.com/files/bigthread.7z" target="_blank" rel="noopener" class="mycode_url">https://garybeene.com/files/bigthread.7z</a>   90MB<br />
<br />
I had to manually walk through the forums to get a list of threads that have changed since the last update so please let me know if I missed anything!]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[The FILECOPY command]]></title>
			<link>http://pump.richheimer.de/showthread.php?tid=52</link>
			<pubDate>Sun, 15 Jun 2025 16:04:52 +0000</pubDate>
			<dc:creator><![CDATA[<a href="http://pump.richheimer.de/member.php?action=profile&uid=42">Tillmann Viefhaus</a>]]></dc:creator>
			<guid isPermaLink="false">http://pump.richheimer.de/showthread.php?tid=52</guid>
			<description><![CDATA[When I write:<br />
<br />
CHDR "D:\Test_with_Files"<br />
<br />
A = "Original.exe"<br />
B = "Original_Copy.exe"<br />
Filecopy A, B<br />
<br />
A is existing on the harddrive but File B is not created. Why is that?]]></description>
			<content:encoded><![CDATA[When I write:<br />
<br />
CHDR "D:\Test_with_Files"<br />
<br />
A = "Original.exe"<br />
B = "Original_Copy.exe"<br />
Filecopy A, B<br />
<br />
A is existing on the harddrive but File B is not created. Why is that?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Getting Current UTC]]></title>
			<link>http://pump.richheimer.de/showthread.php?tid=51</link>
			<pubDate>Fri, 30 May 2025 05:22:10 +0000</pubDate>
			<dc:creator><![CDATA[<a href="http://pump.richheimer.de/member.php?action=profile&uid=151">Owen_English</a>]]></dc:creator>
			<guid isPermaLink="false">http://pump.richheimer.de/showthread.php?tid=51</guid>
			<description><![CDATA[Have waded back thru the previous forum posts but at a loss to get an answer.<br />
Sorry if it's been asked before but all I need is the numerical string for the <span style="font-weight: bold;" class="mycode_b">Current UTC timestamp</span>.<br />
How?<br />
Thanks.]]></description>
			<content:encoded><![CDATA[Have waded back thru the previous forum posts but at a loss to get an answer.<br />
Sorry if it's been asked before but all I need is the numerical string for the <span style="font-weight: bold;" class="mycode_b">Current UTC timestamp</span>.<br />
How?<br />
Thanks.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Detecting VM  discussion]]></title>
			<link>http://pump.richheimer.de/showthread.php?tid=30</link>
			<pubDate>Wed, 29 Jan 2025 20:52:17 +0000</pubDate>
			<dc:creator><![CDATA[<a href="http://pump.richheimer.de/member.php?action=profile&uid=8">Anne Wilson</a>]]></dc:creator>
			<guid isPermaLink="false">http://pump.richheimer.de/showthread.php?tid=30</guid>
			<description><![CDATA[I have listed some pertinent codes on detecting Virtual Machines, these are :<br />
<br />
Detect QEMU Virtual Machine<br />
<a href="http://pump.richheimer.de/showthread.php?tid=29&amp;pid=160#pid160" target="_blank" rel="noopener" class="mycode_url">http://pump.richheimer.de/showthread.php...160#pid160</a><br />
<br />
<br />
Detect Hyper-V Virtual Machine<br />
<a href="http://pump.richheimer.de/showthread.php?tid=28&amp;pid=159#pid159" target="_blank" rel="noopener" class="mycode_url">http://pump.richheimer.de/showthread.php...159#pid159</a><br />
<br />
Detect WINE emulator<br />
<a href="http://pump.richheimer.de/showthread.php?tid=27&amp;pid=146#pid146" target="_blank" rel="noopener" class="mycode_url">http://pump.richheimer.de/showthread.php...146#pid146</a><br />
<br />
Detect the Virtual Box Virtual Machine<br />
<a href="http://pump.richheimer.de/showthread.php?tid=26&amp;pid=143#pid143" target="_blank" rel="noopener" class="mycode_url">http://pump.richheimer.de/showthread.php...143#pid143</a><br />
<br />
This thread forms the discussions for these codes, if you encounter detections through<br />
the use of these programs or not able to detect , please let me know.<br />
<br />
These VM and emulator are commonly used in the Windows and Linux platforms<br />
by users who can pirate your programs,  therefore detections are vital to<br />
discourage the use of VM to pirate your products. <br />
<br />
Once a <span style="color: #ff4136;" class="mycode_color">VM is detected</span>, just stop the program and exit.  Or  make it GPF <br />
or do something irrelevant to make it difficult for them to make copies of your programs ?]]></description>
			<content:encoded><![CDATA[I have listed some pertinent codes on detecting Virtual Machines, these are :<br />
<br />
Detect QEMU Virtual Machine<br />
<a href="http://pump.richheimer.de/showthread.php?tid=29&amp;pid=160#pid160" target="_blank" rel="noopener" class="mycode_url">http://pump.richheimer.de/showthread.php...160#pid160</a><br />
<br />
<br />
Detect Hyper-V Virtual Machine<br />
<a href="http://pump.richheimer.de/showthread.php?tid=28&amp;pid=159#pid159" target="_blank" rel="noopener" class="mycode_url">http://pump.richheimer.de/showthread.php...159#pid159</a><br />
<br />
Detect WINE emulator<br />
<a href="http://pump.richheimer.de/showthread.php?tid=27&amp;pid=146#pid146" target="_blank" rel="noopener" class="mycode_url">http://pump.richheimer.de/showthread.php...146#pid146</a><br />
<br />
Detect the Virtual Box Virtual Machine<br />
<a href="http://pump.richheimer.de/showthread.php?tid=26&amp;pid=143#pid143" target="_blank" rel="noopener" class="mycode_url">http://pump.richheimer.de/showthread.php...143#pid143</a><br />
<br />
This thread forms the discussions for these codes, if you encounter detections through<br />
the use of these programs or not able to detect , please let me know.<br />
<br />
These VM and emulator are commonly used in the Windows and Linux platforms<br />
by users who can pirate your programs,  therefore detections are vital to<br />
discourage the use of VM to pirate your products. <br />
<br />
Once a <span style="color: #ff4136;" class="mycode_color">VM is detected</span>, just stop the program and exit.  Or  make it GPF <br />
or do something irrelevant to make it difficult for them to make copies of your programs ?]]></content:encoded>
		</item>
	</channel>
</rss>