15,891,136 members
Sign in
Sign in
Email
Password
Forgot your password?
Sign in with
home
articles
Browse Topics
>
Latest Articles
Top Articles
Posting/Update Guidelines
Article Help Forum
Submit an article or tip
Import GitHub Project
Import your Blog
quick answers
Q&A
Ask a Question
View Unanswered Questions
View All Questions
View C# questions
View C++ questions
View Javascript questions
View Visual Basic questions
View Python questions
discussions
forums
CodeProject.AI Server
All Message Boards...
Application Lifecycle
>
Running a Business
Sales / Marketing
Collaboration / Beta Testing
Work Issues
Design and Architecture
Artificial Intelligence
ASP.NET
JavaScript
Internet of Things
C / C++ / MFC
>
ATL / WTL / STL
Managed C++/CLI
C#
Free Tools
Objective-C and Swift
Database
Hardware & Devices
>
System Admin
Hosting and Servers
Java
Linux Programming
Python
.NET (Core and Framework)
Android
iOS
Mobile
WPF
Visual Basic
Web Development
Site Bugs / Suggestions
Spam and Abuse Watch
features
features
Competitions
News
The Insider Newsletter
The Daily Build Newsletter
Newsletter archive
Surveys
CodeProject Stuff
community
lounge
Who's Who
Most Valuable Professionals
The Lounge
The CodeProject Blog
Where I Am: Member Photos
The Insider News
The Weird & The Wonderful
help
?
What is 'CodeProject'?
General FAQ
Ask a Question
Bugs and Suggestions
Article Help Forum
About Us
Search within:
Articles
Quick Answers
Messages
Comments by V.Lorz (Top 75 by date)
V.Lorz
5-Dec-20 6:20am
View
Thanks for the comment.
I understand, that's the point, to my best understanding for certain time now services can't have any UI and must use other means for communicating with users.
But thing is these guys at coretechnologies have AlwaysUp, as I introduced in my question. They claim AlwaysUp can run the application in the isolated session 0, yet the UI will not be visible, of course.
Using something similar, if the user needs to change any application settings, he/she can stop the service, start the application in normal user space (current session), change whatever is needed, then restart the service again.
Using that workaround I could manage to have the user starting one instance that could be configured for using the MQTT data channels I already have in the application for sharing sensors data and see the overall state.
That's my idea, you think it would work? Any alternative to AlwaysUp you could know of?
Thanks a lot again
V.Lorz
15-Apr-20 12:37pm
View
Hi F-ES Sitecore, thanks for your comment.
The first request (login) requires a POST, not a GET. And the second requires a session id returned by the server on this first login request. Maybe my question was not self explanatory, sorry for that.
I've already solved the issue, see my comment below under MadMyche's solution.
V.Lorz
15-Apr-20 12:29pm
View
Thanks a lot for taking your time to answer, @MadMyche. Here what I did, and worked for me:
CookieContainer Cookies = new CookieContainer();
Cookies.Add( new Cookie( "thesessionidcookiename", SessionId, "", "the server domain" ) );
HttpWebRequest request = HttpWebRequest.CreateHttp( $"{Uri}?{POSTData}" );
request.Method = "GET";
request.CookieContainer = Cookies;
using (WebResponse response = request.GetResponse())
{}
At the end the server is using a java servlet engine, so the session id can also be given as part of the url. There is no session id cookie, neither any cookie at all, in the login response, it comes as part of its headers.
V.Lorz
5-Nov-13 3:42am
View
Copy the same file to two different locations? Yes, it's possible.
Take a look into Segey's solution for a better than xcopy approach.
V.Lorz
5-Nov-13 1:20am
View
5'd
V.Lorz
10-Oct-13 1:42am
View
Thanks for noting that.
V.Lorz
9-Oct-13 8:40am
View
Even more, nesting if () else statements like in this code is bad coding practice, use the switch clause instead.
V.Lorz
27-Sep-13 5:14am
View
Just curious about it. Could you please tell us why do you need it?
V.Lorz
27-Sep-13 5:10am
View
Beware that getting the value for the last inserted Id does not mean that it corresponds to the row you've just inserted if insertions are done concurrently from different processes, threads, or even computers.
V.Lorz
25-Sep-13 3:04am
View
You could implement functionalities in Add-ins running in separate AppDomains with support for mounting/unmounting (plug/unplug). If you detect one new version for one add-in you may unmount it (and all others that depend on it), unload the associated appdomain, update the new assemblies and mount the add-ins again. But it is error prone, relatively complex to achieve and not too practical in most cases.
V.Lorz
25-Sep-13 2:38am
View
What do you mean by 'changes'?
V.Lorz
25-Sep-13 2:23am
View
From his question text "I want to retrieve long blob data from MYSQL in C#" it seems that He wants to retrieve, not to insert.
V.Lorz
25-Sep-13 2:17am
View
Wao!! Now it has been voted! 5! Did you vote for it yourself?
http://www.codeproject.com/Messages/4666759/My-vote-of-5.aspx
V.Lorz
24-Sep-13 2:41am
View
Who manages memory allocation/deallocation for the resulting string?
V.Lorz
22-Sep-13 5:03am
View
'.lis' and '.mtc' files can be so many different things (from listing files to databases) that it is realy difficult to advise you about where to look for usefull information.
Please, improve your question and give us some more details about the file types and format. If you google "read and write files c#" you'll find lots of hints/articles on file I/O using C#.
V.Lorz
22-Sep-13 4:48am
View
It's a little bit difficult to get a clear idea on your needs, but it seems to me like you're trying to create a custom control that allows the user to edit kind of a text/content that can incorporate texts and images at the same time (like RTF, maybe?).
In the meantime, you could start taking a look into the custom winform controls creation process. The code associated to this article here (http://www.codeproject.com/Articles/36116/Industrial-Controls-2
here
) demonstrates many of the aspects you need to master for that.
V.Lorz
22-Sep-13 3:21am
View
Thank you, Sergey.
V.Lorz
V.Lorz
21-Sep-13 17:37pm
View
In the article's comments a couple contributors (or members) mention ways to retrieve the plain text from the samples provided.
If you initialize one parameter using default values from code, with relatively simple disassembly (IL DASM) it was possible to recover them (from the installer or from the application) as the protection must be applied in the first program run. Using the reflector add-in and the VS debugger it was also feasible to defeat the protection.
The DpapiProtectedConfigurationProvider class relays on the Data Protection Service API which uses the current user's credentials for generating (deriving) the password to be used for encryption/decryption. If no entropy is added in the key derivation, any application running under the same user account can decypher the cryptogram generated by another application. If you 'realy' want to have access to the encrypted configuration, the only challenging thing to achieve would be determining what is the value used for generating the entropy (Local file? Registry Entry? Processor Info? Remote File? or any other method).
This post here (http://stackoverflow.com/questions/12301485/rsaprotectedconfigurationprovider-implementation-vs-rsacryptoserviceprovider-c-s) has some interesting comments about the RsaProtectedConfigurationProvider.
Regards, V.Lorz
p.d. Sorry for not giving you precise links
V.Lorz
21-Sep-13 11:54am
View
Hi, Graham, in previous versions of the runtime this method was reported as being highly UNSECURE and having several drawbacks. I've done a lot of work with SAMs, RFIDs and HSMs so this is interesting for me. Do you know if it has been improved in current framework versions?
V.Lorz
V.Lorz
20-Sep-13 14:48pm
View
5-ed
V.Lorz
20-Sep-13 5:49am
View
You didn't say what types are listData and x.listInfo. What do you mean with 'do work'?
V.Lorz
20-Sep-13 5:44am
View
Sorry, had to update the text 'cause something was wrong in the submit.
V.Lorz
20-Sep-13 5:39am
View
And your question is.....
V.Lorz
18-Sep-13 9:11am
View
And if you plug your printer in your server all labels will get printed there, possibly too many miles away from the client.
In some cases, in fact little bit more complicated cases like printing the label and at the same time encode one RFID tag attached to it using the Zebra's RFID reader/writer (not present in all Zebra printers), when you need direct access to specific hardware connected to the client's computer it becomes necessary to write one applet or one ActiveX component.
In your case it could be possible to generate (render) one image with the content to be printed and let the user redirect it to the Zebra printer.
V.Lorz
18-Sep-13 8:41am
View
I think you better take a look into the articles first so you can widen your programming skills. The code is more than simple and the explanations in the second article are clear enough. For multithreading try: https://www.google.es/#q=multithreading+c%23+codeproject, there are some 'first-aid' kits over there that will guide you step-by-step in all you could eventually need.
V.Lorz
18-Sep-13 8:32am
View
What do you mean with 'convert image to text'? Convert the bytes that represent the image into some simple text representation? Do OCR on the image to extract some text present on it?
The sentence "ImageToBase64(newImage, System.Drawing.Imaging.ImageFormat.Jpeg);" in your code has no side effects if you do nothing with the string it returns.
V.Lorz
18-Sep-13 7:08am
View
You could try to gather stack trace information to have an idea where the exception is thrown.
For debugging and verifying applications that are running as part of control and automation systems in some industrial machines I use the VisualStudio Remote Debugger. It is a little bit tricky to get it working but it is certainly a very usefull tool for remote-debugging such applications.
V.Lorz
18-Sep-13 4:59am
View
In some multi-threading related classes when compiling for .Net 3.5 and running on .Net 3.0..... yes, that happened. Try to upgrade the framework and let us know (please).
V.Lorz
18-Sep-13 3:47am
View
Great!
V.Lorz
18-Sep-13 2:04am
View
Ok, if it already works with the firewall disabled then you have most of your work done and something to play with.
V.Lorz
18-Sep-13 1:11am
View
Perhaps that depends on more firewall configuration parameters, not only the port and where it is located (in the local computer that attemps the connection, the remote server, or one physical device in between.
V.Lorz
17-Sep-13 10:24am
View
Yes, the sentence is incomplete, better refer to this previous Solution 3 (http://www.codeproject.com/Answers/654748/Delete-Query-From-Sql-Database#answer3)
V.Lorz
17-Sep-13 10:06am
View
Yes, you're right, the solution merely depicts one pattern that can be used for avoiding that kind of situation when the application goes into production state.
V.Lorz
17-Sep-13 9:12am
View
You should never do things in this order as for a while your database is not coherent (you'll have childs without parent). If the application fails after deleting the child table rows you'll end up with one corrupted database.
In an multithreading context, one application running in one thread could 'see' a false database corruption state if it executes SELECT (with or even without JOIN) queries in between deletes being executed by another application.
V.Lorz
17-Sep-13 7:26am
View
Note that using the query "select count (*) from Reg" will return the 'count', not the 'max'. It will fail if you remove any row from the table.
Locating the maximun value has also one 'little' problem, it is not thread-safe:
1) Thread-1 adds one row; <-this autoincrements the counter from (Val) to (Val+1).
2) Thread-1 gets preempted by Thread-2;
3) Thread-2 adds one row; <-this autoincrements the counter from (Val+1) to (Val+1+1).
4) Thread-2 reads the max id; <-it will receive (Val+2);
5) Thread-2 is preempted and Thread-1 enters again RUN mode;
6) Thread-1 reads the max id; <-it will receive (Val+2) <<<< ERROR!!!!!;
V.Lorz
17-Sep-13 7:18am
View
Most databases support using 32 bit unsigned integers for the row id column value, that gives you around 4294967296 values, which is in the the range of 10-to-12 characters wide when represented in text format. Zero padding-left will complete your text length.
V.Lorz
17-Sep-13 7:11am
View
Note that he wants to keep the id in the 10 to 12 chars range.
V.Lorz
17-Sep-13 7:08am
View
This is not appropiate for generating unique ids. If you have a fast computer you'll be able to generate the same id thousands or even millions of times during the time lapse of one second.
Furthermore, when Windows updates the internal RTC (real time clock) for synchronizing with time services you may run again in the same problem, your local RTC could have been running faster than the reference clock used by the time server.
V.Lorz
17-Sep-13 7:04am
View
Random number generators are what their name says, Random, and that means it has inherent unpredictability. Random generators tend to follow some kind of 'distribution', it can be gaussian, normal, etc.
You may absolutely be sure that numbers in a random series will appear more than once with higher or lower probability denpending on the distribution function of the generator whether it be hardware (true generator) or software (pseudo generator).
V.Lorz
17-Sep-13 6:58am
View
You may encapsulate your data in one class and override it's ToString() method so you can generate the text you want to show in the combobox. Dirty but works.
V.Lorz
17-Sep-13 5:38am
View
In that case I suppose all of them will be updating the viewport from code which runs in the main thread, so if any of them takes too long for completing one task in that thread all other viewport updates will be delayed.
This perhaps will not take you too long, take a look at using the VLC media player. There is some information about it here: http://www.codeproject.com/Answers/653111/Media-player-for-windows-forms
V.Lorz
17-Sep-13 5:27am
View
Yes, indeed, your resulting encrypted text (cipher/cryptogram) will always contain bytes that could, eventualy, represent special chars. But your encryption function is returning one Base64 encoded string which should properly handle that and return only characters and digits. Same applys for the decryption function.
One thing else, if you are storing the key in plain text, why are you encrypting anyway?
V.Lorz
17-Sep-13 4:01am
View
As it can be seen you already have the code. Don't you?
V.Lorz
17-Sep-13 3:55am
View
Yes, your list index will change, but your row id will not and you can combine all together. Perhaps you should consider filtering directly in your database query, not iterating through your list?
V.Lorz
17-Sep-13 3:40am
View
Ok, if you're working with databases most surely you've added each table one column with autogenerated unique indexes. This is normally done for you by most database table editors. The value for this column is automatically generated by the database engine on each new row insertion.
That solves your problem. When you recover your data you somehow keep that index too so you can use it for uniquely identifying your rows (referenced by your objects in your list) in your row updates/deletes/etc.
V.Lorz
17-Sep-13 3:33am
View
Seems like the problem is finding the way to continue (and to complete) that pseudo code convertion to C#. Is it?
Should he/she read again the tutor's notes to better understand the problem?
V.Lorz
17-Sep-13 3:23am
View
Different threads? Are you using the media player ActiveX control for playing the videos?
V.Lorz
17-Sep-13 3:13am
View
What type of list are you using for holding the values? What kind of problem you say you'll have in the future?
V.Lorz
15-Sep-13 13:26pm
View
Hi,
When it comes too difficult for me to figure out situations like this I create one C++ mixed (managed+unmanaged) mode DLL. In that kind of DLL you can make native call directly from managed code. In some cases I create a wrapper class and in some other cases I just play with code until I get all puzzle pieces.
Using the IL dasm and assembly code debugging has for a long time been also great help for me, specially when trying to figure out the real parameter's expected size.
Most of the time it all ends up (after that research) adding some marshalling attributes to the parameters in the external function declaration, just to make sure they are marshalled in the proper size.
V.Lorz
15-Sep-13 10:09am
View
I grabbed the code for converting one value from Hsv to rgb from internet (function 'Convert') and adapted the original code to C# (it was C++) just enough to make it work, so it is ugly and probably not accurate. I can't remember where I took the code from. The intention was to give one idea about how the average colour would look like.
V.Lorz
15-Sep-13 8:06am
View
Deleted
Hi,
From your question tags I suppose you're using C#. I've tried this code (after the comment) and it works for me. It will have bugs and the values should surely require trimming. It uses the wrapping classes and avoids using the native/interop calls.
Create one form and place two Emgu.CV.UI.ImageBox objects named 'captureImageBox' and 'processedImageBox'. Also place one button named 'm_btnCapture'. Add the code below to the form's code file.
The codes uses the second webcam (for using other than the embedded one in my pc), one imagebox shows the original (filtered) frame and the other the binary processed frame. Black is scene background and white detected (thresholded) color regions.
When you click the button it starts/stops captures. Click on the captured image to select one color.
Hope it works for you.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Emgu.CV;
using Emgu.CV.Structure;
namespace ColorDet
{
public partial class Form1 : Form
{
private Capture _capture;
private bool _captureInProgress;
private Rectangle m_Rect;
private Point m_ClickPoint;
private Hsv m_TargetColor;
private bool m_TrackColor;
private Hsv m_Lower;
private Hsv m_Higher;
public Form1()
{
m_Rect = Rectangle.Empty;
m_ClickPoint = Point.Empty;
m_TrackColor = false;
InitializeComponent();
}
private void ProcessFrame(object sender, EventArgs arg)
{
Image<bgr, byte=""> frame = _capture.QueryFrame();
frame = frame.SmoothGaussian(3, 3, 1, 1);
if (!m_ClickPoint.Equals(Point.Empty))
{
Rectangle Rect = new Rectangle(m_ClickPoint.X - 5, m_ClickPoint.Y - 5, 10, 10);
if (Rect.X < 0)
Rect.X = 0;
if (Rect.Y < 0)
Rect.Y = 0;
using (Image<bgr, byte=""> TouchRegion = frame.GetSubRect(Rect))
{
using (Image<hsv, byte=""> TouchRegionHsv = TouchRegion.Convert<hsv, byte="">())
{
int Points = TouchRegion.Width*TouchRegion.Height;
m_TargetColor = TouchRegionHsv.GetAverage();
Bgr Colr = Convert(m_TargetColor);
m_Lower = new Hsv(m_TargetColor.Hue - 30, m_TargetColor.Satuation - 30, m_TargetColor.Value - 30);
m_Higher = new Hsv(m_TargetColor.Hue + 30, m_TargetColor.Satuation + 30, m_TargetColor.Value + 30);
panel2.BackColor = Color.FromArgb((int)Colr.Red, (int)Colr.Green, (int)Colr.Blue);
frame.Draw(Rect, new Bgr(Color.Red), 1);
m_TrackColor = true;
}
}
m_ClickPoint = Point.Empty;
}
if (m_TrackColor)
{
Image<hsv, byte=""> HsvFrame = frame.Convert<hsv, byte="">();
HsvFrame = HsvFrame.SmoothGaussian(5, 5, 0.1, 0.1);
Image<gray, byte=""> InRageFrame = HsvFrame.InRange(m_Lower, m_Higher);
processedImageBox.Image = InRageFrame;
}
captureImageBox.Image = frame;
}
const float FLOAT_TO_BYTE = 255.0f;
const float BYTE_TO_FLOAT = 1.0f / FLOAT_TO_BYTE;
private Bgr Convert(Hsv hsv)
{
int H = (int)hsv.Hue;
int S = (int)hsv.Satuation;
int V = (int)hsv.Value;
// HSV to RGB color conversion in OpenCV
int bH = H; // H component
int bS = S; // S component
int bV = V; // V component
float fH, fS, fV;
float fR, fG, fB;
// Convert from 8-bit integers to floats
V.Lorz
13-Sep-13 7:31am
View
Download the package from http://sourceforge.net/projects/libvlcnet/files/latest/download?source=dlp: and unpack it in your local hard drive. Locate the folder named 'trunk' and open the solution file (libvlcnet.sln) you'll find there. There's one sample winforms application named 'simple-player'.
V.Lorz
13-Sep-13 6:50am
View
I just made simple tests at that time using sample code already available in the forum but did not continue with it as it was not needed any more for that application. On my PC I had VLC Media Player installed when I made the tests.
V.Lorz
10-Sep-13 14:16pm
View
I agree with you. It makes a lot of sense and the code should be, in fact, redesigned in the manner your describe. Thanks for the vote and your comments.
V.Lorz
9-Sep-13 9:05am
View
How do you have the tables? Do you have two independent instances of DataTable, two DataTables contained in one Single DataSet, or two tables in one database? Each case requires it's own solution. The solution for the third one was given by RyanDev in Solution 1.
V.Lorz
9-Sep-13 4:49am
View
Note that cmboItem.SelectedText, if it refers to ComboBox's property SelectedText, doesn't always return the text of the selected item, only when not in dropdown list mode and if SelectionLength equals the item text length and SelectionStart equals zero.
The Text property does return the text for the selected item (when there is an item selected, of course).
V.Lorz
9-Sep-13 4:43am
View
Visual Basic string concatenation operator (&)?????
V.Lorz
5-Sep-13 10:55am
View
Hi, you have to create the destination matrix with the same size as the source matrix. The destination matrix should also be of 1 byte elements. This link could be of some help: http://www.emgu.com/wiki/files/2.0.0.0/html/17acc2fc-f298-5e57-102f-17e2f67003de.htm.
V.Lorz
5-Sep-13 6:42am
View
Sorry, I don't. Maybe this helps http://www.akadia.com/services/dotnet_polymorphism.html?
V.Lorz
4-Sep-13 5:51am
View
Good to hear you solved it.
V.Lorz
4-Sep-13 4:41am
View
This is a good solution when processing large files as it doesn't load the entire file content into memory. But maybe for small files (up to some kilobytes) File.ReadAll---() functions are more convenient as you will require less code and the resulting code will also be more readable.
V.Lorz
4-Sep-13 4:36am
View
I tried this code in my PC and it works perfectly:
for (int Times = 0; Times < 1000; Times++)
{
byte[] Bytes = File.ReadAllBytes( @"C:\Archivos_Locales\smime.p7s" );
StringBuilder BinText = new StringBuilder();
foreach (byte Byte in Bytes)
{
BinText.Append( Convert.ToString( Byte, 2 ).PadLeft( 9, '0' ) );
}
File.WriteAllText( @"C:\Archivos_Locales\smime.p7s.txt", BinText.ToString() );
}
I my oppinion your problem should be in some other place (Anti virus? Other application automatically opening the file), but not in the code.
V.Lorz
4-Sep-13 3:37am
View
Just a comment, it's strange to see you need to convert from binary to 'binary string'.
The code snipped seems to be correct at first sight, I've used File.ReadAllBytes() and File.ReadAllText() many times and it works.
Where exactly is the exception rising? The term 'label' in the exception message is a little strange for me. Are you opening the same file in more places?
V.Lorz
2-Sep-13 3:34am
View
Mine too.
V.Lorz
1-Sep-13 6:11am
View
Good joke...
V.Lorz
1-Sep-13 6:01am
View
I wouldn't call it 'article'. It is only VB code, with next to nothing of information describing what is done and why.
Just as SA sayd in his comment, transparency doesn't work in WinForm applications. I run the project in Win 8 and played a little bit with it, just to be sure, and the result was 'no transparency'.
V.Lorz
1-Sep-13 5:10am
View
For me, when things were working correctly on pc's with Visual Studio and not in pc's without it, most of the time it was caused for:
1) Not having the C++ runtime installed on the target pc.
2) Compiling the aplication in debug mode without packaging the debug mode runtime DLL's.
3) Some component mismatch (specially having the 3.5 SP1 framework on the development PC and the 3.5 (with no SP) on the target PC.
4) Some external component missing (Crystal Reports, Adobe Reader, etc).
You're probably running in the 3rd case. Take a look into the SqlCe versions you're using on the development and target pc's. Do they match?
V.Lorz
31-Aug-13 17:52pm
View
What do you mean with 'illuminate'? Turn the flash light on?
LCD (TFT types) are not the only type of displays, you also have OLED's (in several flavors or technologies) which don't have a back light at all. This are getting common in Asia, not yet in Europe. In the LCD you need the backlight 'cause every pixel has at least three transistors that act like light filters, they can't emit light. OLED displays are a matrix of organic elements that emit light by their own, when current flows throw them of course.
If you're able to put in 'black' color the entire escreen so the only visible component is your button, you could emulate the effect by controlling the screen lighting intensity. Never done it in Windows Phone but it can be done in most Android phones (provided your application has the required hardware access permissions).
V.Lorz
31-Aug-13 17:18pm
View
I've got lost, sorry. Does it work, or not?
Where does this code throw the exception? In the call to ad.Fill(dt), maybe? Can you debug the code in the pc that shows the error?
Try installing the Visual Studio RemoteDebugger in the PC that reproduces the error so you can step into the code. You can download it directly from msdn site or install it from your visual studio installation cd's, it uses to come there (and some times it is copied to your hard drive on installation).
For debugging assemblies you don't have source code you could use the .Net Reflector (http://www.red-gate.com/products/dotnet-development/reflector/). It's not free any more, but they have a trial version that you can try out.
V.Lorz
31-Aug-13 3:59am
View
Are you using only .net framework components? Are you calling unmanaged functions from your managed code?
Try to isolate the code that produces the error and post it here.
V.Lorz
29-Aug-13 8:03am
View
Yes, modify the function (or create a new one) so you can count matches until the nth match (or no more matches) is found. Ugly, but works.
V.Lorz
28-Aug-13 7:52am
View
In the example the validator will run in the server and will not validate the format. While redering the page you may inject the jscript code for validating the text editor using one regex.
Does any one remember if client side validators exist for this task?
V.Lorz
28-Aug-13 7:45am
View
ASP.Net or WinForms?
In ASP.Net JScript + regexps are probably the best choice
V.Lorz
28-Aug-13 5:21am
View
VStudio creates one wrapping interop DLL (AxInterop.AcroPDFLib.dll) for accessing the Adobe PDF Viewer ActiveX object (the COM object that visualises the PDF in your form). The AcroPDF.dll is part of the Adobe Reader installation and requires the viewer/writer to be installed on your pc.
In my pc it's located under C:\Program Files\Common Files\Adobe\Acrobat\ActiveX\AcroPDF.dll
V.Lorz
27-Aug-13 15:52pm
View
Ok, in that case simply derive your new class from the Control class or from the RichTextBox class, then add the new functionality you need and Compile the project. You sould now see a new category in the forms editor toolbox with the name "your_project_name Components". Just drag and drop the new component you have created to your form.
I you need to create one component which at the same time contains more components (like a form) then rightclick your project (in the solution view) -> Add -> User control. Edit the control, compile, and the rest is just like described before.
Any way, take a deep look into the fast colored textbox (see Dave's comment), it works realy well and shows many things and concepts.
Show More