|
Well, I didn't ever know that I could use this write-function. It is also the first time I've ever got it working. Here are the steps:
1) Add Explorer to your toolbox (customize toolbox -> COM components -> Microsoft Web Browser) and add it to your form
2) Add a reference in your C# project to Microsoft.mshtml
3) use mshtml in your .cs-file like this:
using mshtml;
4) Browse to about:blank like this (ieBrowser is the browser-component):
object o = new object();<br />
ieBrowser.Navigate("about:blank", ref o, ref o, ref o, ref o);
5) Fill the HTML from a string like this:
IHTMLDocument2 doc;<br />
object oDoc = ieBrowser.Document;<br />
doc = (IHTMLDocument2)oDoc;<br />
<br />
doc.write("<HTML>This is bold and this is italic</HTML>");
That should do the trick.
Thanks for the tips!!!
Structured programming vs. chaotic mind boggling
|
|
|
|
|
Hi , we have a free but limited control that _might_ do what you want.
http://www.compona.com/WikiEngine/WikiPageViewer.ascx?ID=44[^]
it has its own rendering engine and can render with different font settings and images.
but as i said , it is limited , no tables , no stylesheets , no selections(!) etc.
basiclly the following tags are implemented
<a href=...
<font face=... size=... color=...(named colors only right now)
<br>
<hr>
<img src="file://... or src="1" (refering to an image in an attached imagelist)
<b>
<i>
<u>
it wordwraps and can also autosize to make the content fit.
//Roger - Compona
|
|
|
|
|
I am trying to authenticate and changing password for a windows domain user using ADSI and C#. When i try to connect to the server using LDAP provider i am getting COMException and message saying Server not opperational.
Below is my code
try
{
DirectoryEntry myDirectoryEntry;
myDirectoryEntry = new DirectoryEntry
("LDAP://domain or machine name","user id","pwd");
myDirectoryEntry.Invoke("setPassword","NewPassword");
myDirectoryEntry.CommitChanges();
}
catch(System.Runtime.InteropServices.COMException ex)
{
Console.WriteLine(ex.Message);
Console.Read();
}
where i am going wrong.
your pointers in this regard appreciated
Cheers,
Venkatraman Kalyanam
Chennai - India
"Being Excellent is not a skill, it is an attitude"
|
|
|
|
|
Hi,I have the seam problem but one gay told me that I should see "Profesional C#" book.You can find it in www.wrox.com.Youo can see my problem at "Active Directory - Users or whatever".
Have a nice day.
|
|
|
|
|
vg_sarev wrote:
Active Directory - Users or whatever".
I did see that post. But even those examples are giving the same *king exception "Server is not operational"
Cheers,
Venkatraman Kalyanam
Chennai - India
"Being Excellent is not a skill, it is an attitude"
|
|
|
|
|
In C# is there a way to implement Thread que which is equalant to CWinThread
so that I can post messages to the Thread queue and handle message parsing
inside the Thread and post back to Main Window?
|
|
|
|
|
Code below implement such thread
<br />
[DllImport("user32.dll", CharSet=CharSet.Auto)]<br />
public static extern IntPtr PostThreadMessage( uint idThread, int msg, int wParam, int lParam);<br />
[DllImport("kernel32.dll", ExactSpelling=true, CharSet=CharSet.Auto)]<br />
public static extern int GetCurrentThreadId();<br />
[DllImport("User32.dll", CharSet=CharSet.Auto)]<br />
public static extern bool PeekMessage(ref MSG msg, int hWnd, uint wFilterMin, uint wFilterMax, uint wFlag);<br />
[DllImport("User32.dll", CharSet=CharSet.Auto)]<br />
public static extern bool GetMessage(ref MSG msg, int hWnd, uint wFilterMin, uint wFilterMax);<br />
[DllImport("User32.dll", CharSet=CharSet.Auto)]<br />
public static extern bool TranslateMessage(ref MSG msg);<br />
[DllImport("User32.dll", CharSet=CharSet.Auto)]<br />
public static extern bool DispatchMessage(ref MSG msg);<br />
<br />
#region MSG<br />
[StructLayout(LayoutKind.Sequential)]<br />
public struct MSG <br />
{<br />
public IntPtr hwnd;<br />
public int message;<br />
public IntPtr wParam;<br />
public IntPtr lParam;<br />
public int time;<br />
public int pt_x;<br />
public int pt_y;<br />
}<br />
#endregion<br />
<br />
<br />
public void AsyncShow()<br />
{<br />
if( m_guiThread == null )<br />
{<br />
ThreadStart start = new ThreadStart( BackgroundGUIThread );<br />
m_guiThread = new Thread( start );<br />
m_guiThread.IsBackground = true;<br />
m_guiThread.Start();<br />
}<br />
}<br />
<br />
public void Finish()<br />
{<br />
try<br />
{<br />
lock(this)<br />
{<br />
if( m_idThread >= 0 )<br />
{<br />
WindowsAPI.PostThreadMessage( (uint)m_idThread, (int)Msg.WM_CLOSE, 0, 0 );<br />
}<br />
<br />
m_guiThread.Abort(); <br />
m_guiThread.Join();<br />
}<br />
}<br />
catch( Exception exc )<br />
{ <br />
Trace.WriteLine( exc.Message + "\r\n" + exc.StackTrace, "PrgDlg Exception" );<br />
}<br />
}<br />
private void BackgroundGUIThread()<br />
{<br />
Thread.CurrentThread.Name = "Background GUI MsgLoop Thread";<br />
<br />
try<br />
{<br />
lock( this )<br />
{<br />
m_idThread = WindowsAPI.GetCurrentThreadId();<br />
this.Show();<br />
}<br />
<br />
MSG msg = new MSG();<br />
<br />
while( WindowsAPI.GetMessage( ref msg, 0, 0, 0 ) )<br />
{<br />
WindowsAPI.TranslateMessage( ref msg );<br />
WindowsAPI.DispatchMessage( ref msg );<br />
<br />
if( msg.message == (int)Msg.WM_CLOSE )<br />
{<br />
Trace.WriteLine( "Close", "thread (2)" );<br />
break;<br />
}<br />
}<br />
}<br />
finally<br />
{<br />
Trace.WriteLine( "Quit thread" );<br />
}<br />
}<br />
Good Luck
Alex Kucherenko
|
|
|
|
|
Alex, Thanks a lot.
Can you give me sample code , how to Implement PostMessage and Retriveing Custom messages to this Threaded Window?
|
|
|
|
|
Did you ever get a response?
I need to port an application from C++ to C# that used CWinThread too
|
|
|
|
|
I cann't understand how I should check for user in Active Directory.Evry time when I try to check for somethink in Active Directory thete rise this kind of exeption.
try
{
DirectoryEntry entry = new DirectoryEntry("LDAP://CN=Alabala");
System.DirectoryServices.DirectorySearcher mySearcher = new
System.DirectoryServices.DirectorySearcher(entry);
mySearcher.Filter = ("objectClass=user");
foreach(System.DirectoryServices.SearchResult resEnt in
mySearcher.FindAll())
{
Console.WriteLine( resEnt.Path );
}
}
catch(System.Runtime.InteropServices.COMException ex)
{
Console.WriteLine(ex.Message);
}
|
|
|
|
|
Before you say it, yes I'm using the default DoubleBuffer Method of a control.
My problem is this. I'm writing a custom drawn 3D progress bar. I've made the control and it all works swell, i'll eventually write an article about it etc...
But it flickers really bad. Peterchen has tested it and has the same problem.
I think i've narrowed it down to the fact that I'm refreshing the whole control, wait, hear me out.
The graph is Pseudo 3D, it is made up of three 'panels' which are constructed using 7 points. these points are inter related and depend on each other to work. I've tried other methods and this worked the best in my head.
Now, if the tick step is a long interval,then the problem is solved, because its not trying to refresh itself as much and the CPU can cope.
How can I get it to draw just the updated bit of the graph. Below are links to the binaries and the source as it stands now.
http://www.nonny.com/CP/SetiBar.zip[^]
"If you just say porn then you get all manner of chaff and low grade stuff." - Paul Watson, Lounge 25 Mar 03 "But a fresh install - it's like having clean sheets" - C. Maunder Lounge 3 Mar '03
Jonathan 'nonny' Newman
Homepage [www.nonny.com] [^]
|
|
|
|
|
As you code is right now there isn't much you can do to stop the flicker. But if you make the control smarter then you can eliminate most of it.
The causes of flicker are pretty basic: You take a picture, erase it, then draw over it again.
If you can skip the erase step or instead just draw over it, then you can eliminate the majority of flicker in an application. That is why the "use DoubleBuffer is said often" because you do both steps.
After looking at your source you have enabled the DoubleBuffer style bit but you missed the other two that need to be set with it, AllPaintingInWmPaint and UserPaint . That may do the trick for you, because the first one tells it to skip the drawing of the background and the second one tells the framework you are doing the drawing and not the OS.
If that doesn't do it, then you'll need to add some more intelligence to your repainting by calling Invalidate and passing in a rectangle or region which contains the area of the control that has changed. This will make the only part of the control to change be the part that was updated. As an optimization you can make the OnPaint handler paint only what it needs to by inspecting the ClipRectangle property of the PaintEventArgs.
James
"It is self repeating, of unknown pattern"
Data - Star Trek: The Next Generation
|
|
|
|
|
James T. Johnson wrote:
AllPaintingInWmPaint and UserPaint
I said it before and I'll say it again here, you are a genius. OK it was simple, and I was stupid. But thank you!
"If you just say porn then you get all manner of chaff and low grade stuff." - Paul Watson, Lounge 25 Mar 03 "But a fresh install - it's like having clean sheets" - C. Maunder Lounge 3 Mar '03
Jonathan 'nonny' Newman
Homepage [www.nonny.com] [^]
|
|
|
|
|
When user press DELETE button on datagrid ,it delete the row in datagrid.I want ask user before delete and add that row again if he/she does not confirm it.Something like what happend in MSAccess when you delete a row in datagrid.
I did some research and found RowUpdating event and I can cansel deleteing row from dataset and prevent updating dataset(with UpdateStatus.SkipCurrentRow ),but datagrid does not refreshed and deleted row in datagrid does not come back again until I close application and open it again.So if I know how to refresh datagrid correctly I can solve it too.
Mazy
"And the carpet needs a haircut, and the spotlight looks like a prison break
And the telephone's out of cigarettes, and the balcony is on the make
And the piano has been drinking, the piano has been drinking...not me...not me-Tom Waits
|
|
|
|
|
Ignore that suggestion (message deleted, but I know you'll be notified). I thought I was in the ASP.NET forum.
Paul
We all will feed the worms and trees So don't be shy - Queens of the Stone Age, Mosquito Song
|
|
|
|
|
Mazy
"And the carpet needs a haircut, and the spotlight looks like a prison break
And the telephone's out of cigarettes, and the balcony is on the make
And the piano has been drinking, the piano has been drinking...not me...not me-Tom Waits
|
|
|
|
|
Well,I found it,I have to FIll DataAdapter again but I don't know if it is good way.
Mazy
"And the carpet needs a haircut, and the spotlight looks like a prison break
And the telephone's out of cigarettes, and the balcony is on the make
And the piano has been drinking, the piano has been drinking...not me...not me-Tom Waits
|
|
|
|
|
Well I found better one:
DataSet.RejectChanges()
Mazy
"And the carpet needs a haircut, and the spotlight looks like a prison break
And the telephone's out of cigarettes, and the balcony is on the make
And the piano has been drinking, the piano has been drinking...not me...not me-Tom Waits
|
|
|
|
|
Okay, im really a bit baffled here. I am putting together some code from two different samples on here, to make a WinZip-compatible CRC32 ColumnHandler for explorer, to make my work go easier.
The code uses a bit-field for a WinAPI call. Now, i was always taught that if you have a bit-field, and you want to set one of the flags in it on, then you OR them together, and if you want to check if a field has a particular flag on, then you AND them.
So i tried this, and it crashed my devenv process. So, just for kicks, i tried reversing them, and low-and-behold, it works!
C#:OR apparently is equal to the rest of the world's, AND.
C#:AND apparently is equal to the rest of the world's, OR.
at least bitwise.
Did Microsoft actually get so bold as to decide to rewrite the laws of logic? This is absolutely bizarre.
|
|
|
|
|
Whosit wrote:
This is absolutely bizarre.
It certainly is. If I were to take a guess I would say there is some greater problem somewhere else in your code, because bitwise-or and bitwise-and work the same as they do in C/C++.
James
"It is self repeating, of unknown pattern"
Data - Star Trek: The Next Generation
|
|
|
|
|
Well, i dont think so, but its not mostly my code. To make my CRC32 ColumnHandler i took the ColumnH code from the first project below, and just dropped in the CRC32 class from the second one in place of the MD5 code. The only other changes i made (which is where i had the & vs. | problem) Is below...
http://www.codeproject.com/csharp/ColumnHandler.asp
http://www.codeproject.com/csharp/crc32_dotnet.asp
In the implementation of GetColumnInfo i changed the column title and description and then:
psci.fmt=LVCFMT.RIGHT;<br />
psci.cChars=40;<br />
<br />
psci.csFlags=SHCOLSTATE.TYPE_STR;
to
psci.fmt=LVCFMT.LEFT;<br />
psci.cChars=40;<br />
<br />
psci.csFlags=SHCOLSTATE.TYPE_STR & SHCOLSTATE.ONBYDEFAULT & SHCOLSTATE.SLOW;
The last line setting csFlags is where i had problems. When i tried to use the OR (|) it consistently hung. But when i use the AND (&) it works just beautifully with the right results and all.
Then what threw me off even more was a line (unchanged) in GetItemData which reads:
if(((FileAttributes)pscd.dwFileAttributes|FileAttributes.Directory)==FileAttributes.Directory)
Where the original author is checking the flag with an OR.
This is all quite backwards from what i know of bit-wise logic.
Any explanations or ideas why this is?
|
|
|
|
|
whosit wrote:
Any explanations or ideas why this is?
I can't think of any reasons, but a quick test shows that what we know of as bitwise logic is what C# uses.
[Flags()]
public enum Enum
{
A = 1,
B = 2,
C = 4,
D = A | B,
E = 8,
F = 64
}
[STAThread]
static void Main(string[] args)
{
Enum e = Enum.A;
Console.WriteLine("e = {0}", e);
e = Enum.A | Enum.C;
Console.WriteLine("e should equal (A): e = {0}", e);
if( (e & Enum.A) == Enum.A )
Console.WriteLine("Enum.A is set");
else
Console.WriteLine("Enum.A isn't set");
e = (e | Enum.B);
Console.WriteLine("e should (A, B, C) or (D, C): e = {0}", e);
if( (e & Enum.C) == Enum.C )
Console.WriteLine("Enum.C is set");
if( (e & Enum.B) == Enum.B )
Console.WriteLine("Enum.B is set");
if( (e & Enum.A) == Enum.A)
Console.WriteLine("Enum.A is set");
e = e | Enum.E;
if( (e & Enum.E) == Enum.E)
Console.WriteLine("Enum.E is set - correct usage");
if( (e | Enum.E) == Enum.E)
Console.WriteLine("Enum.E is set - incorrect usage");
e = e & (~Enum.E);
Console.WriteLine("e should be (A, B, C) or (D, C)...e was unset: e = {0}", e);
Console.ReadLine();
} The output should be:
e = A
e should equal (A): e = A, C
Enum.A is set
e should (A, B, C) or (D, C): e = D, C
Enum.C is set
Enum.B is set
Enum.A is set
Enum.E is set - correct usage
e should be (A, B, C) or (D, C)...E was unset: e = D, C Now as to the next part...
whosit wrote:
Then what threw me off even more was a line (unchanged) in GetItemData which reads:
if(((FileAttributes)pscd.dwFileAttributes|FileAttributes.Directory)==FileAttributes.Directory)
Where the original author is checking the flag with an OR.
The code above would work, so long as pscd.dwFileAttributes had either no flags set or just the FileAttributes.Directory flag set, in which case the bitwise-or effectively does nothing and the check continues to work.
Doing a quick test if I change the | to the proper & it still works as expected, and taking a look at some directories I can't find any that don't report to contain some read-only files, even dirs with no files in them. Trying to change that (by unchecking readonly in the dir properties box) has no effect.
James
"It is self repeating, of unknown pattern"
Data - Star Trek: The Next Generation
|
|
|
|
|
Oh well, must be some 'feature' to make logic easier for..... someone. *shrug*
Thanks anyway. At least it works, even if it IS backwards (in my case).
By the way, which epsidoe is your Data quote from in your sig?
|
|
|
|
|
whosit wrote:
if(((FileAttributes)pscd.dwFileAttributes|FileAttributes.Directory)==FileAttributes.Directory)
I played around a bit more with the sample and indeed the code above doesn't work like the author intended, but because he wrote exception-safe code you never know it.
I through in some System.Diagnositc.Trace.WriteLine calls through out the function, the first was in the if statement where I told it to print the FileAttributes of the item that caused it to trigger the return. Interesting, as I thought only those that are have Directory get printed.
Then I added some code in the exception handlers to print out the exceptions and the FileAttributes of the item that had the exception. Each of the exceptions was Access to the path "C:\path" is denied. and the FileAttributes was Directory and ReadOnly or Directory and System.
whosit wrote:
psci.csFlags=SHCOLSTATE.TYPE_STR & SHCOLSTATE.ONBYDEFAULT & SHCOLSTATE.SLOW;
As to why you had to use & for it to work, I assume it deals with the stuff above. That is my next thing to try
James
"It is self repeating, of unknown pattern"
Data - Star Trek: The Next Generation
|
|
|
|
|
Ahh..... so the directory check then in fact actually *SHOULD* be an AND and i dont just have some messed up compiler? Thats Very good to know.... now i can feel safer about my sanity
|
|
|
|
|