|
ok im using vb 6 and i would like to open the print dialog and and print out a specified form, but id like ot print it out background, color and all, as is. thank you
---------------------
And Like The Wind Our Hero Vanishes Off Into The Distance...
|
|
|
|
|
Does anyone know if you can control the harddrive directly. I want to beable to read or write to a specific sector to see what is contained in that sector. And can this be done with VB 6 or .NET or would you have to use a C type language. Thanks for any help
|
|
|
|
|
i thought with win 2000/xp/nt you couldnt control it directly because of the core design of the os [shell/kernel].
i know sum1 will help you about this, because i sure cant lol.
sum1 can reaffirm this or disprove it, as they will know more about it than me.
|
|
|
|
|
i thought with win 2000/xp/nt you couldnt control it directly because of the core design of the os [shell/kernel].
i know sum1 will help you about this, because i sure cant lol.
sum1 can reaffirm this or disprove it, as they will know more about it than me.
edit: whoops, sry for repost
------------------------
Jordan.
III
|
|
|
|
|
I know that you can not access the memory because of the protected mode that the OS operates at, but im not sure about the hard drive i think it is possible.
|
|
|
|
|
i thought it was all hardware, and in contrary i thought u could access the memory.
we'll have ta wait and c for a more knowledgeable response.
------------------------
Jordan.
III
|
|
|
|
|
It's possible in VB6 and VB.NET, but not easily done. Since the hardware is abstracted from your app, there is no direct way of doing this. You have to go through the drivers sitting in the kernel to get the sectors for you. You'll be declaring a bunch of API calls and structures to get this to work.
C++ is a much better choice...
RageInTheMachine9532
|
|
|
|
|
Hello,
I want to use a grid in VB6 that is capable of being bound to an ADO data source, and also is capable of hosting comboxes and other controls in the grid columns. Do the native Datagrid and Hierarchical FlexGrid in VB6 do this? As far as I can see, all the grids that come with VB are incapable of "hosting" other controls. Any comments or recommendations?
Thanks,
Trimtrom
|
|
|
|
|
|
Looking to find how I can get a remoted object to contact client applications. I need to reference the application from the server process but there is no such thing as referencing an application. How can I get this done?
|
|
|
|
|
you need to have a bidirectional remoting channel.
I think the standard .net channel classes are only unidirectional. Search the web for "bidirectional remoting channel". I've seen such a tutorial but I can't remember where it was.
|
|
|
|
|
If I am not mistaken I just found a simple chat application. I believe it is raising an event on the objects that instantiate em. Is this the way to pull it off?
Thanks for your input Klaus.
|
|
|
|
|
It depends if the chat app is using remoting.
Take a look here: http://www.ingorammer.com/Software/OpenSourceRemoting/BiDirTcpChannel.html
|
|
|
|
|
I get this error:
System.data.datarow.protected sub New(builder as system.data.datarowbuilder)' is not accessible in this context because its 'Protected'.
This Dr is underlined in my code:
Dim dr As New System.Data.DataRow
Here is my code:
Dim sqlconnectionstring As String = "Data Source=Server;User ID=admin;Password=lalala;Persist Security Info=False;Initial Catalog=Oasis"
Dim SqlConn As New System.Data.SqlClient.SqlConnection(sqlconnectionstring)
Dim strTrackingSheet As String = "Select * from Trackingsheet"
Dim datrackingsheet As New System.Data.SqlClient.SqlDataAdapter(strTrackingSheet, sqlconnectionstring)
Dim dsPatient As New System.Data.DataSet
Dim dtNewPat As New System.Data.DataTable
Dim dr As New System.Data.DataRow
SqlConn.Open()
datrackingsheet.Fill(dsPatient, "TrackingSheet")
SqlConn.Close()
Dim PatCB As System.Data.SqlClient.SqlCommandBuilder = New System.Data.SqlClient.SqlCommandBuilder(datrackingsheet)
Anyone know whats goin on? thanks
|
|
|
|
|
Hi all,
I have several HTML-Files burned on a cd.
My idea now was to write a small program that will be executed by autorun.inf when the CD is inserted into the drive.
The program should now execute one of the HTML-Files of the disk and end itself.
My problem now:
- get the actual drive letter of the CD-Rom-Drive
- execute an external program (e.g. html-file)
- i'm completly new to vb.net
Thanks for any help!
Dirk
|
|
|
|
|
I don't think you want to use VB.NET for this. Simply because you're launcher will have to rely on the .NET Framework already being installed on the client machine.
Your launcher is better written in C++.
Also, you don't have to get the drive letter of the CDROM to launch the page. When your app is launched, it's default directory will be the root of the CD. All you need to do is Shell execute the .htm file.
RageInTheMachine9532
|
|
|
|
|
I have a visual basic 6 application that needs some updating for a project moving from SQL 7 to SQL 2000. The application is an executable that users create shortcuts to on their desktops. The exe file resides on the same server as the sql 2000 database it needs to access. Previously users created an ODBC connection on their own Windows 2000 Professional workstations, and the application that resides on the server used a simple connection string of ...
oconn.open "DSN=MOL;UID=sa;" ( yeah I know this is bad, I inherited it this way )
... but now the server has been upgraded from NT4 to Server 2003, and the database has gone
from SQL7 to SQL2000. I have been experimenting blindly with new connection strings, and
am currently trying ...
oconn.open "Integrated Security=SSPI;Initial Catalog=MOL;Data Source=server_name_here;"
The error I get when I run this vb exe on my own workstation with an ODBC connection setup
to use SQL authentication (using a user/pass that is setup in SQL) is ...
"Login failed for user '(null)'. Reason: Not associated with a trusted SQL Server connection.
Being a newbie to VB and SQL, and given the fact that I inherited this app to try and fix it, I am wondering if this approach is totally wrong? There are roughly 10 users who need to create a shortcut to this VB exe file that resides on the same server as the database, and the appliction is used to make updates to the database. Thanks for any suggestions.
|
|
|
|
|
|
I have tried all of the options displayed on these links, and all seem to result with the same
error. I am wondering if something with the SQL setup itself is blocking connections? We have
turned off the use of Named Pipes in SQL 2000. I have tried with both having my own ODBC
connection setup (using SQL authentication and having the user/pass setup that is the db user we need to use), and without any ODBC driver at all on my own desktop. I am kind of out of ideas at this point.
Thanks!
|
|
|
|
|
Usually ocurrs if using Windows Authentication on the server, and attempting to use SQL authentication to get in....
Win Auth uses Domain login, whereas SQL uses uid/pwd - are you SURE you're using mixed mode authentication?
"Now I guess I'll sit back and watch people misinterpret what I just said......"
Christian Graus At The Soapbox
|
|
|
|
|
Hello,
I am using vb.net and trying to connect to an access database. I get this error which i have never seen can someone help me out. It is only doing this for this database it connects fine to other databases i have tried.
error: Microsoft Data link Error
unable to connect to database
Could not open table 'MsysAccounts' in the workgroup information file.
Thankyou,
Santana
|
|
|
|
|
Does anyone know how I can autoupdate my application?
Kind regards,
Ruben Noorderijk
|
|
|
|
|
There are tons of ways. Pretty much all of them require a second executable.
Here is the source used for updating programs on our Intranet. There is update detection code in each executable. When that executable detects that there are updates available, it notifies the user. When the user says "Update," the program launches the updater and closes.
This isn't the cleanest or most secure code, but it works.
Imports System.IO
Imports System.Net
Public Class frmMain
Inherits System.Windows.Forms.Form
#Region " Windows Form Designer generated code "
Public Sub New()
MyBase.New()
'This call is required by the Windows Form Designer.
InitializeComponent()
'Add any initialization after the InitializeComponent() call
End Sub
'Form overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
Friend WithEvents Button1 As System.Windows.Forms.Button
Friend WithEvents RichTextBox1 As System.Windows.Forms.RichTextBox
Friend WithEvents ProgressBar1 As System.Windows.Forms.ProgressBar
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Dim resources As System.Resources.ResourceManager = New System.Resources.ResourceManager(GetType(frmMain))
Me.Button1 = New System.Windows.Forms.Button
Me.RichTextBox1 = New System.Windows.Forms.RichTextBox
Me.ProgressBar1 = New System.Windows.Forms.ProgressBar
Me.SuspendLayout()
'
'Button1
'
Me.Button1.Enabled = False
Me.Button1.FlatStyle = System.Windows.Forms.FlatStyle.System
Me.Button1.Location = New System.Drawing.Point(360, 8)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(72, 32)
Me.Button1.TabIndex = 2
Me.Button1.Text = "Launch"
'
'RichTextBox1
'
Me.RichTextBox1.Location = New System.Drawing.Point(8, 48)
Me.RichTextBox1.Name = "RichTextBox1"
Me.RichTextBox1.Size = New System.Drawing.Size(424, 224)
Me.RichTextBox1.TabIndex = 3
Me.RichTextBox1.Text = ""
'
'ProgressBar1
'
Me.ProgressBar1.Location = New System.Drawing.Point(8, 8)
Me.ProgressBar1.Name = "ProgressBar1"
Me.ProgressBar1.Size = New System.Drawing.Size(344, 32)
Me.ProgressBar1.TabIndex = 4
'
'frmMain
'
Me.AutoScaleBaseSize = New System.Drawing.Size(6, 14)
Me.ClientSize = New System.Drawing.Size(442, 280)
Me.ControlBox = False
Me.Controls.Add(Me.ProgressBar1)
Me.Controls.Add(Me.RichTextBox1)
Me.Controls.Add(Me.Button1)
Me.Font = New System.Drawing.Font("Verdana", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Me.Name = "frmMain"
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
Me.Text = "Updating Software..."
Me.ResumeLayout(False)
End Sub
#End Region
Private Sub CopyFromInternet(ByVal Source As String, ByVal Destination As String, Optional ByVal Size As Long = 0)
Dim wc As New WebClient
' Does the file exist?
Dim str As Stream
Dim outstr As Stream
Dim bw As BinaryWriter
Dim br As BinaryReader
Try
str = wc.OpenRead(Source)
If wc.ResponseHeaders.Item("Content-Type") = "text/html" Then
If wc.ResponseHeaders.Item("Content-Location").IndexOf("404") > 0 Then
Throw New FileNotFoundException("The file '" & Source & "' was not found.")
End If
End If
Finally
str.Close()
End Try
Debug.WriteLine("Destination: " & Destination)
' Download the file
If Size = 0 Then
wc.DownloadFile(Source, Destination)
Else
str = wc.OpenRead(Source)
br = New BinaryReader(str)
outstr = New FileStream(Destination, FileMode.Create)
bw = New BinaryWriter(outstr)
For x As Integer = 1 To Math.Floor(Size / 4096)
bw.Write(br.ReadBytes(4096))
Next
bw.Write(br.ReadBytes(Size Mod 4096))
bw.Close()
br.Close()
outstr.Close()
str.Close()
End If
wc.Dispose()
End Sub
Private Sub RtfWrite(ByVal TextColor As Color, ByVal Text As String)
RichTextBox1.SelectionColor = TextColor
RichTextBox1.AppendText(Text)
Application.DoEvents()
End Sub
Private Sub RtfWriteLine(ByVal TextColor As Color, ByVal Text As String)
RtfWrite(TextColor, Text & ControlChars.CrLf)
End Sub
Private ReadOnly DEBUG_TEXT As Color = Color.Gray
Private ReadOnly NORMAL_TEXT As Color = Color.Black
Private ReadOnly ERROR_TEXT As Color = Color.Red
Private LaunchPath As String
Private BadInstall As Boolean = False
Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim params() As String = Environment.GetCommandLineArgs
If params.GetUpperBound(0) <> 3 Then ' Wrong parameter count
MsgBox("This program was launched incorrectly. Please contact support.", MsgBoxStyle.OKOnly, "Error AutoUpdating Application")
Application.Exit()
Exit Sub ' Used because in release mode, the application will continue past this point.
End If
LaunchPath = params(3)
'Application.EnableVisualStyles()
Me.Show()
Application.DoEvents()
' Get our temp folder
Dim temppath As String = Path.GetTempFileName
If File.Exists(temppath) Then File.Delete(temppath)
Directory.CreateDirectory(temppath)
Dim sr As StreamReader
Try
RtfWrite(NORMAL_TEXT, "Retrieving update information...")
CopyFromInternet(params(1), temppath & "\updateinfo.txt")
RtfWriteLine(NORMAL_TEXT, "done.")
sr = New StreamReader(temppath & "\updateinfo.txt")
ProgressBar1.Value = 0
ProgressBar1.Minimum = 0
ProgressBar1.Maximum = sr.BaseStream.Length + 2 ' In case the last line doesn't have a CRLF
While sr.Peek <> -1
Dim s As String = sr.ReadLine
ProgressBar1.Value += s.Length + 2
s = s.Trim
Dim process As Boolean = True
If s.StartsWith("'") Then process = False
If s.Length = 0 Then process = False
If s.IndexOf(",") = -1 Then process = False
If process Then
Dim fparams() As String = s.Split(",")
If fparams.GetUpperBound(0) < 1 Or fparams.GetUpperBound(0) > 2 Then
Throw New ArgumentException("The update file was not properly formed.")
End If
RtfWrite(NORMAL_TEXT, "Retrieving " & fparams(1) & "...")
If fparams.GetUpperBound(0) = 1 Then
CopyFromInternet(fparams(0), temppath & "\" & fparams(1))
Else
CopyFromInternet(fparams(0), temppath & "\" & fparams(1), CLng(fparams(2)))
End If
RtfWriteLine(NORMAL_TEXT, "done.")
End If
End While
ProgressBar1.Value = 0
Dim di As New DirectoryInfo(temppath)
ProgressBar1.Maximum = di.GetFiles.GetUpperBound(0) + 1
If Not Directory.Exists(params(2)) Then
Directory.CreateDirectory(params(2))
End If
RtfWrite(NORMAL_TEXT, "Installing update to " & params(2) & "...")
Try
For Each f As FileInfo In di.GetFiles
Dim CopyTo As String = params(2) & "\" & f.Name
If File.Exists(CopyTo) Then
File.SetAttributes(CopyTo, FileAttributes.Archive)
End If
f.CopyTo(CopyTo, True)
ProgressBar1.Value += 1
Application.DoEvents()
Next
RtfWriteLine(NORMAL_TEXT, "done.")
Catch ex As Exception
RtfWriteLine(ERROR_TEXT, "ERROR!")
RtfWriteLine(ERROR_TEXT, "DO NOT USE THIS PROGRAM UNTIL IT IS REINSTALLED!")
RtfWriteLine(ERROR_TEXT, "One or more of the files necessary to use the program did not install properly.")
RtfWriteLine(ERROR_TEXT, "Please contact support immediately.")
BadInstall = True
Button1.Text = "Close"
End Try
Catch ex As Exception
RtfWriteLine(NORMAL_TEXT, "")
RtfWriteLine(ERROR_TEXT, "ERROR: " & ex.Message)
RtfWriteLine(ERROR_TEXT, ex.StackTrace)
Finally
' Clean up temp files
If Not sr Is Nothing Then sr.Close()
If Directory.Exists(temppath) Then
Directory.Delete(temppath, True)
End If
Button1.Enabled = True
End Try
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If Not BadInstall Then
Dim objProcess As New System.Diagnostics.Process
objProcess.StartInfo.FileName = LaunchPath
objProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal
objProcess.Start()
End If
Application.Exit()
End Sub
End Class
Module InPoint
Sub Main()
Application.EnableVisualStyles()
Application.DoEvents()
Dim f As New frmMain
f.ShowDialog()
End Sub
End Module
|
|
|
|
|
In MDI applications, it is a common occurance for the user to open several different forms. However, even if one form is closed, the "offset" used to place the subsequent forms is remembered, so each form is gradually shifted down and to the right until it shifts partially or fully outside of the MDI client area.
I'd like to ensure that the MDI clients are always completely within the MDI client area upon first being opened.
I have come up with a hack involving the OnVisibleChanged event and two helper functions (listed below), but is there a more graceful way of doing this?
<code>
' In each form
Protected Overrides Sub OnVisibleChanged(ByVal e As System.EventArgs)
EnsureInsideMDIArea(Me)
End Sub
' Helper functions in a module
Public Function GetMDIClientRect(ByVal frm As Form) As Rectangle
Dim pr As Rectangle = Rectangle.Empty
For Each c As Control In frm.Controls
If TypeOf c Is MdiClient Then pr = c.ClientRectangle
Next
Return pr
End Function
Public Sub EnsureInsideMDIArea(ByVal frm As Form)
' Ignore if not an MDI client
If Not (frm.MdiParent Is Nothing) Then
' Get parent rect
Dim pr As Rectangle = GetMDIClientRect(frm.MdiParent)
Dim r, b As Integer
r = frm.Size.Width + frm.Left
b = frm.Size.Height + frm.Top
If r > pr.Right Or b > pr.Bottom Then
frm.Top = 0
frm.Left = 0
End If
End If
End Sub
</code>
|
|
|
|
|
Graceful is in the eye of the beholder. If what you wrote works for you, great!
Another method, though, would be to put this kind of code entirely in the MDI Parent and when you create the new child form, you can get it's size and make sure that it is inside the MDI Parent's client window without iterating through all the controls...
' In MDI Parent
Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click
Dim newChild As New frmChild
newChild.MdiParent = Me
' You must show the form before it will receive its Top and Left values. If you send
' the new form to EnsureChildInClientArea first, its Top and Left will always be 0,0.
newChild.Show()
EnsureChildInClientArea(newChild)
End Sub
Private Sub EnsureChildInClientArea(ByRef frmChild As Form)
Dim r, b As Integer
r = frmChild.Width + frmChild.Left
b = frmChild.Height + frmChild.Top
If r > Me.ClientSize.Width Or b > Me.ClientSize.Height Then
frmChild.Top = 0
frmChild.Left = 0
End If
End Sub
RageInTheMachine9532
|
|
|
|