|
I am building an extended webbrowser which I want to support Optical Zooming as implemented in IE7. The control base uses the VS 2005 webbrowser native control with IOleCommandTarget COM interface implemented. Despite following MSDN docs on this it would appear that marshaling the pavIn and pavOut of the IOleCommandTarget.Exec does not correctly handle .Net objects for passing the zoom level. Based on several docs I have reviewed it would appear that the COM object is expecting a VARIANTARG pointer. My question is this, is there a good example of this implement in C# or VB that correctly marshals the data to the COM Interface? The follow is the COM iterface and code that I am implementing:
<br />
' Interop - IOleCommandTarget (See MSDN - <a href="">http://support.microsoft.com/?kbid=311288</a>)<br />
<comimport(), guid(="b722bccb-4e68-101b-a2bc-00aa00404770" ),="" _<br="" mode="hold" /> InterfaceType(ComInterfaceType.InterfaceIsIUnknown)> _<br />
Public Interface IOleCommandTarget<br />
Sub QueryStatus(ByRef pguidCmdGroup As Guid, ByVal cCmds As UInt32, _<br />
<marshalas(unmanagedtype.lparray, sizeparamindex:="1)"> ByVal prgCmds As OLECMD, _<br />
ByRef pCmdText As OLECMDTEXT)<br />
<br />
Sub Exec(ByRef pguidCmdGroup As Guid, ByVal nCmdId As Long, _<br />
ByVal nCmdExecOpt As Long, ByRef pvaIn As Object, _<br />
ByRef pvaOut As Object)<br />
End Interface<br />
</marshalas(unmanagedtype.lparray,>
Below is the Zooming code:
<br />
Public Sub Zoom(ByVal Level As Integer)<br />
Dim cmdt As IOleCommandTarget<br />
Dim oOut As New Object<br />
Dim oIn As New Object<br />
Dim oIE As Object = Nothing<br />
Try<br />
If Me.Document IsNot Nothing Then<br />
cmdt = CType(Me.Document.DomDocument, IOleCommandTarget)<br />
If Level < 10 Then<br />
Level = 10<br />
ElseIf Level > 1000 Then<br />
Level = 1000<br />
End If<br />
oIn = Level<br />
cmdt.Exec(CmdGUID, OLECMDID.OLECMDID_OPTICAL_ZOOM, OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT, oIn, oOut)<br />
End If<br />
Catch ex As Exception<br />
Throw New Exception(ex.Message.ToString, ex.InnerException)<br />
Finally<br />
cmdt = Nothing<br />
End Try<br />
End Sub<br />
Any help with marshaling the VARIANTARGs of the Exec method would much appreciated!
Thanks in advance!!
Paul
|
|
|
|
|
Hi All,
I have a VB.Net Windows application. I want to install it at only place that is server and give access to all the users in the network. Can anybody help me in this regard.
I am able to do it by installing on every machine but instead of this I want to install it only on one machine and give access from all the machines.
Thanks,
Aleem Mohammad.
S/W Engineer
Akebono Soft Technologies
aleem_abdul@akebonosoft.com.
|
|
|
|
|
You can do so by installing the application only on Server, if you are on LAN and then SHARE the folder in which you installed your application. But .NET framework is required on every client machine that is going to run this application.
AliAmjad(MCP)
First make it Run THEN make it Run Fast!
|
|
|
|
|
That's only part of the story. Each machine has to be told to trust either that network share, or the .EXE and related assemblies, or to trust any managed code signed with a certain key.
|
|
|
|
|
What you need to understand to do this is Code Access Security.
It's possible to do this, but, any managed code running from a non-local source (i.e.: network share) is NOT trusted, by default. The machine has to be told to trust this code. No matter what, you've visiting every machine that's going to run this code, one way or another.
If these machines are networked in workgroup mode, you have to either visit each machine (on foot) or somehow have each machine install a packaged policy, usually done by an .MSI installation.
In a domain environment, this gets much easier as you can use group policy to distribute that trust policy to the workstations.
You can read up more on how to do this here[^] and here[^].
|
|
|
|
|
Thanks to all of you I got the Idea now I can convince my client. Thanks for your help.
S/W Engineer
Akebono Soft Technologies
aleem_abdul@akebonosoft.com.
|
|
|
|
|
I want to set a database to be recognized in all forms. How can I do this. I've tried to write it in a module (general declaration, in sub main()),but it is still not recognized in the aplications forms.
Thank you!
|
|
|
|
|
Hello,
You can declare the connection object in a module and then use the same in rest of your application.
Here is the code which you can use:
Module:
Option Explicit
Public gstrDbPath As String
Public adoConnection As ADODB.Connection
Public Sub Main()
gstrDbPath = App.Path & ".\Nwind.mdb"
Dim strConnectString As String
Set adoConnection = New ADODB.Connection
strConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" _
& gstrDbPath
'Open the connection to the database
adoConnection.Open strConnectString
Form1.Show
End Sub
Form1:
Option Explicit
Dim RS As ADODB.Recordset
Private Sub Command1_Click()
Dim strQuery As String
Set RS = New ADODB.Recordset
strQuery = "SELECT * from customers"
Set RS.ActiveConnection = adoConnection
With RS
.LockType = adLockBatchOptimistic
.CursorType = adOpenStatic
.CursorLocation = adUseClient
.Open strQuery
End With
Set Text1.DataSource = RS
Text1.DataField = "ContactName"
RS.ActiveConnection = Nothing
End Sub
Similarly you can use the Connection object in other forms.
Regards,
Dave
Dave Traister
Software Engineer
ComponentOne LLC
www.ComponentOne.com
|
|
|
|
|
It's bad practice to open a connection to a database for the life of your application. You normally opnly keep the connection open for as long as it takes to execute your query, then close it.
Soemthing like this would usuallu be done in a class, possibly using shared (static) methods, or if your design requires it, instance methods. These methods would return a specific set of data, each getting a connection to the database, executing it's own query, then closing the connection. Other methods would do the same thing, but update the database.
|
|
|
|
|
Hi, I would Like to make an auto-clicker that runs on a timer. I've tried several different appoaches to this problem but none seem to work...Any help? These a few, out of many attempts, that seem promising but I really don't know if I'm even close.
Static x As Integer<br />
x += 1<br />
If x = 1 Then<br />
Me.DesktopLocation = Cursor.Current.Handle.GetType.BaseTyp
(or)
Me.MouseButtons = MouseButtons.Left = MouseButtons.Left
(or)
PerformClick()<br />
x = 0<br />
End If
help please?
Thank you.
|
|
|
|
|
You were asked this before, but you never answered. Click on what?? A control in your own application?? A button in another application?? What??
|
|
|
|
|
A wild guess lacking sufficient info: myButton.PerformClick()
Luc Pattyn [Forum Guidelines] [My Articles]
This month's tips:
- before you ask a question here, search CodeProject, then Google;
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get;
- use PRE tags to preserve formatting when showing multi-line code snippets.
|
|
|
|
|
On Feb 25 you asked:
mykingdomforanewusername wrote: How would I make a timer click for me? EX. If i clicked a button that would start the timer then the curser would start clicking at the intervel on the timer/
I asked you on what you want to click. i suggested, in case it is a button, using button.perfomClick.
You never wrote an answer there, so people have to assume your problem has been solved. Next thing i see: You ask a question on a similar subject in the Visual Studio section a few days later. You got no answer there since your question isn't really clear - click on what?
Now you ask exactly the same question (minus that extra confused-smiley) here again, without rephrasing it to make things clear for others.
So do you want people to help you (which, believe me, they will do, if the know, what exactly your problem is), or are you just going to ask the same question over and over again?
Sorry, if I seem to be so pedantic on that.
"I love deadlines. I like the whooshing sound they make as they fly by." (DNA)
|
|
|
|
|
Hi there,
I am new in this area of programming so please forgive me if it sounds stupid question.
After graduation, I am assigned this project for my first job to change an existing code for a client/ server application that acts a pipe to send/ receive messages from one application to another (mobile device to a windows base app). this pipe is a windows base dll application that is being used with a MFC for visualization. this application has a linked list that relates the mobile device ids to the link id (GPRS; like IP/ Port)and saves this information to send a message that comes from the application to the device. the thing is that when this application for any reason (i.e power issue, computer crash...) restarts all the information gets lost and I am assigned to make the change so that the information be stored in a file/database.. for such a problem..
Can anybody give me some idea and perhaps some document to study to do this, I am supposed to do this very fast (I am doomed)!
I appreciate any suggestions
David
|
|
|
|
|
What part of this do you need help with??
Writing data to a database? Google results for "vb.net database"[^].
|
|
|
|
|
Hello everybody, I'm pretty Noob in vb.net programming so i require some assistance from you pro's.
Here is the problem: I use MS SQL2000 and VB2003 for my project. In that project i have one table with two datetime columns (Start and Stop). I wrote stored procedure that uses these two columns for filtering data (Select * from table where Start>=@Start and Stop<=@Stop) and i want to use that procedure in my project. What I wish, is if u can help me write code so i can enter datetime parameter in two text boxes and with one click on button to receive filtered data from my database on my datagrid....
|
|
|
|
|
This is not a question well suited for a forum. What you want to do is covered in countless tutorials, examples and articles already.
search "stored procedure in vb.net"[^]
If you have any more specific questions about it once you have tried, that would be a question more suited for a forum.
Despite everything, the person most likely to be fooling you next is yourself.
|
|
|
|
|
Hi, I want to design a form in the VB2005(visual studio 2005) to receive data(temperature measurement result) from microcontroller(which is CPLD coolrunner II) after received the data then it will be display the temperature result on the computer screen. First, the data will transmit from CPLD, then it will send by MAX232 to RS232 and then display it on computer screen. I need help, how to make a form and code for the serial
data-in from CPLD. I am using Verilog-HDL for CPLD microcontroller. Can any one help me.
Thanks
|
|
|
|
|
Your description just looks like you need to read data from a serial port. If that's it, then you really don't have to do anything with the microcontroller since it sounds like its already knows what it's supposed to do.
Google results for "vb.net 2005 read serial port"[^].
|
|
|
|
|
Thanks, but one of the problem is that version of VB? I have read many of books, but all talk about VB6 so I am quiet confusing right now. Do you have any related code? Just read a data from the serial port using VB2005.
Cheers
|
|
|
|
|
Hi,
first of all I agree with what Dave said, as far as your code goes, it is not interested
in CPLD or other devices, RS232C is the standard you have chosen.
there are lots of articles about SerialPort class on CodeProject.
If you are in charge, I would recommend you let the PC side send a command to the CPLD
(say "T?") and have the CPLD react on that. Doing so, you don't need any events,
you just do the sequence "port write, wait a few msec, port read" whenever you like.
If your device needs to be in charge, you would need the DataReceived event,
and Control.InvokeRequired and Control.Invoke to update the GUI since DataReceived
event occurs on a different thread.
If some of this is unclear, Google for it. I just gave you all the keywords.
Luc Pattyn [Forum Guidelines] [My Articles]
This month's tips:
- before you ask a question here, search CodeProject, then Google;
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get;
- use PRE tags to preserve formatting when showing multi-line code snippets.
|
|
|
|
|
|
Hi,
I have an Excel spreadsheet with auto filters. This is how I loop through the filtered rows (just to display the rows and columns that are visible after the filter:
Dim rngFilter As Range, rngC As Range, rngJbn As Range
Set rngJbn = Range("A2:R" & Range("R" & Rows.Count).End(xlUp).Row).SpecialCells(xlCellTypeVisible)
For Each rngC In rngJbn
MsgBox rngC.Value
Next
I started displaying data from row 2. Reason is because in the first row there is the dropdowns. As I loop through the columns, I want to be able to check the index of the current cell. I want to do a check on the corresponding cells drop down value. Something like:
If current cell column index = 2 Then
total = ...
End If
Please can someone help me?
Thanks
Brendan
|
|
|
|
|
How would I force it to go to the next row?
Dim rngFilter As Range, rngC As Range, rngJbn As Range
Set rngJbn = Range("A1:R" & Range("R" & Rows.Count).End(xlUp).Row).SpecialCells(xlCellTypeVisible)
For Each rngC In rngJbn
MsgBox rngC.Value
Next
|
|
|
|
|
Does anyone know how can i connect vb.net to MySQL? Please give me an example.
Thanks
Socheat
|
|
|
|